C语言里:(a+b)/2与(a+b)/2.0结果有什么区别?一开始都定义int a,b

如题所述

前一个的结果是整数,不是整数的略去小数部分只保留整数部分。后一个的结果是小数
C语言中
整形相除时两个数为同一类型,结果也是整形,这个你应该懂,也没啥说的。
在整形除以浮点型,或者浮点型除以整形时,会触发隐式类型转换。得出结果的类型以除数与被除数中较高的类型位准。

类型转换的规则是:
同级(例如int与float,long 与 double),整型向实型(浮点型)转换,
不同级,按所占字节数,长度低于基本类型的向基本来兴转换(short 转int,char转int,没错,char是按整型算的),基本类型向两倍长度转换(int转long,float转double)
符号位,unsigned向signed转换,这个最好不要发生,因为这个转换可能只是简单的去掉符号位,这使具体数值改变
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-06
前者结果直接截尾,比如5/2=2
而后者保留精度,比如5/2=2.5
第2个回答  2014-11-06
第一个得到是整型,第二个是double 型。追答

第3个回答  2014-11-06
第一个带小数位 第二个不带小数位

因为第二个跟浮点型做运算会自动转换追问

如果输入3 4两个答案是什么?

追答

3 和3.5

相似回答