我只是有一个简单的问题,我知道C语言,前一段时间我遇到了这段代码:
int a;
a=12/8*8;
我尝试使用代码块,结果是a = 8 !!!!!
编译器是如何处理的?
感谢。
答案 0 :(得分:4)
乘法运算符和除法运算符具有相同的优先级,并从左到右进行求值。所以上面相当于:
a=(12/8)*8;
除法是整数除法,因此结果为1
,因为小数部分被截断。然后将其乘以8
,从而将8
分配给a
。
答案 1 :(得分:3)
由于运算符优先级(*和/具有相同的优先级)和关联性(它们具有从左到右的关联性)
12/8*8 is equal to (12/8)*8
由于整数除法
(12/8)*8 is equal to (1)*8
因此,最终值为8
。