分类: C/C++
2010-06-19 22:18:10
|
这段小程序的输出结果为1010
原因如下:
首先printf的运算顺序是从右到左的,因此先运算a++&&b++||c++,&&和||有一个特点,就是可以保证执行顺序严格从左至右(+,-等运算无此功能),因此先a++,但a为0,编译器是个懒鬼,每当他见&&操作符第一个操作数就是0时,则不进行&&后面的比较,因此b++忽略,执行到这里a为1,b为0,然后编译器执行c++(注意是||完成后++才生效),由于&&,||之前a,b,c皆为0,故逻辑运算的结果为0,逻辑运算结束后a为1,b为0,c为1,先输出a++&&b++||c++的结果0,然后输出c,b,a(在buffer中),从buffer出来顺序相反,故最终结果为1010