数组赋值 问题 + 整型计算后赋值给浮点型 问题
前几天数组测试,总结下做的时候不敢确定的知识点:
。
。
问题一
上题:
重点是 C :先定义,后赋值,我只是觉得这个选项比较怪所以选的,它并不是定义的同时赋值
解释: 数组名为地址(这就是为什么给数组用scanf赋字符串的时候不用加地址符“ & ”),地址是一个常量,常量不能出现在赋值“ = ”的左侧。(不挪窝)
顺便解释下: A,定义的同时赋值数组可以不加长度; B,定义长度同时赋值,为字符数组; D,定义长度同时赋值,为字符串数组(因为有 有效字符结束符“ \0 ”)
。
。
。
问题二:
考试时系统判断我这题全对,可是我清楚我错了一个点,告诉你在第三个空能不能看出来?
整型sum除以n,若不加“ *1.0 ”输出的永远是 “XX.00”
因为除完系统会因为sum是整型自动四舍五入,结束后才会把值赋给average浮点型
试想一个整数直接赋给浮点数,小数点后面只可能有0罢了
所以先“ *1.0 ” (个人理解,此时类似自动转换)
。
。
摘:
在C语言中,不同数据类型的量混合运算时,会发生数据类型的自动转换,在由编译系统自动完成。自动转换遵循以下规则:
-
若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
-
转换按数据长度增加的方向进行,以保证精度不降低。
。
。
。
正确答案: