为什么c语言表达式中 5+1/2 等于5

如题所述

5+1/2在C语言中确实等于5。

原因如下:
/是C语言中算术运算符中的除号;
该符号同时具有整数除和实数除的功能,当两个运算对象都是整数就做整数除,有一个运算对象是浮点数时就执行实数除。
所谓整数除就是舍弃余数,只留下商;因此5/2的结果是2,而5.0/2的结果是2.5。

显然1/2是整数除,商位0,所以5+0还是等于5。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-05
1/2为整除,值为零,所以式子等价于5+0,结果为5

之所以会出现这样的情况是因为1和2都为整型数,直接相除其结果也为整形,而0.5转换为整形后为0,所以最终值为5。如果想要得到5.5这个值的话可以通过一个格式的自动转换过程,让除数与被除数中的一个成为浮点型数据,即5
+
1.0
/
2
或者
5
+
1
/
2.0。
第2个回答  2019-07-18
这个四则运算中,除法的优先级是高于加法的,先做1/2,由于1和2都是整数,所以除法的结果也是整型,为0.
0+5=5,所以最后的结果是5
第3个回答  2019-07-17
5+1/2
1/2优先级高先执行,执行后因为1和2被系统默认整形,隐式转换0.5->0
5+0=5
相似回答