单选题 一个C语言程序在一台32位机器上运行,定义了两个变量x,y,其中x的数据类型为int、y的数据类型为float。已知x=2013,y=201.3,则在一个32位机器中执行下列表达式时,结果为“真”的有______。
Ⅰ.x==(int)(float)x
Ⅱ.y==(float)(int)y
Ⅲ.y==(float)(double)y
  • A.Ⅰ
  • B.Ⅰ、Ⅱ
  • C.Ⅱ、Ⅲ
  • D.Ⅰ、Ⅲ
【正确答案】 D
【答案解析】[解析] C语言算术表达式的计算,在计算过程中,每一步计算所得结果的数据类型由参与运算的运算对象决定,相同数据类型的两个对象运算,结果数据类型不变,不同数据类型的运算对象进行运算,结果的数据类型由高精度的运算对象决定。精度的高低:double>float>int。 本题中强制类型转换,从精度低的数据类型转换为精度高的数据类型,不会发生溢出,反之就会发生溢出,如从double或float转换为int时,小数部分被截断。 故本题Ⅰ中,int类型的x转换为float后没有发生溢出,且没有发生数据舍入。再由。float类型转换为int类型,也保留了x原来的值2013,故Ⅰ正确。 本题Ⅱ中,float类型的y转换为int后,小数部分被截断,值为201。再转换为float类型后值还是为201,与201.3不等,故Ⅱ错误。 本题Ⅲ中,float类型的y转换为double后,值还是为201.3。再转换为double类型后值还是为201.3,故Ⅲ正确。 综上,本题选D。