C语言问题 刚才问题打错了不好意思

来源:百度知道 编辑:UC知道 时间:2024/05/04 11:03:16
若有定义float x=6.5 y=3.7;int a;则表达式(int)(x+y)得直为()
表达式(int)x+y得直为()
(int)x+(int)y得直为()
表达式a=x+y的直()

(2) 若变量num得数据类型为float,其直为5.2则执行num=(int)num后,变量num的直为()

x+y得10.2 用int强制类型转换省去小数部分,(int)(x+y)得10
(int)x+y只将x强制转换为int型,y并未变因此得 9.7
(int)x+(int)y是分别将x,y强制转换后得6,3再相加得9
a=x+y因类型不同不能赋值,运行是会出错,要用强制类型转换成int型,和第一个就一样了

(2)num=(int)num是将num强制转换为int型时的值(5)赋给num。但num的类型没变,也就是说将5赋给了num,将int型的数据赋给float型数据是自动转换为float型,因此输出为5.000000

说的有点啰嗦,希望你能理解

若有定义float x=6.5 y=3.7;int a;则表达式(int)(x+y)得直为(10)
表达式(int)x+y得直为(9.7)
(int)x+(int)y得直为(9)
表达式a=x+y的直(10)

(2) 若变量num得数据类型为float,其直为5.2则执行num=(int)num后,变量num的直为(5.000000)

(int)(x+y) 10 先计算x+y再强制类型转换即(int)10.1为10
(int)x+y 9.7即6+3.7这个结果取浮点型,因为浮点的范围更广泛
(int)x+(int)y 9 都强制了即6+3
a=x+y 10 这个和第一个一样
(2)第二个值为6

10
9.7
9
10
5.0