C语言里,优先级和结合性规则告诉我们哪些符号组成一个意群,同时这些意群内部如何进行计算的次序始终未定义。在表达式:
x = f() + g() * h();
g() 和 h() 组成一个意群进行乘法运算,单两者的调用可能以任何顺序次序出现。同理f()调用,可能在乘法之前,也可能在乘法之后,也可能在g() 和 h()调用之间。唯一可以确定的是乘法在加法之前进行。之所以未定义是想让编译器利用自身架构特点,或者充分利用寄存器中的值。
有专家建议,在C语言里记住 乘法先于加法和减法,涉及其他操作符时一律加上括号,加以明确。
“&&” 和 “||”的计算次序是严格先左后右的。
版权声明:本文为weixin_44135325原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。