Chapter 4&5 Statements, Operator

2020-01-13  本文已影响0人  再凌

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();

由此, 三个函数的调用顺序得到强制化.

上一篇下一篇

猜你喜欢

热点阅读