sizeof()
sizeof() 运算符不会真正执行里面的内容, 所以
sizeof( a = b + c)
并不会真正执行里面的赋值语句
同优先级
f() + g() + k()
即便C语言保证了加法运算是从左到右进行, 但是编译器不会保证f(), 还是g(), 亦或是k(), 谁先运行得到结果
因此,如果这三个函数有旁路效果( side effect), 如I/O, 或影响了全局变量等, 那么执行结果将根据不同的编译器而异.
为了保证相同的计算顺序, 我们可以引入temp变量来强制f,g,k的调用顺序,如下
temp = f();
temp+= g();
temp+= k();
由此, 三个函数的调用顺序得到强制化.
网友评论