再问个逻辑运算问题
#define S x=y=z#define P3(x,y,z) printf("x=%d\ty=%d\tz=%d\n",x,y,z)
main{}
{
int x,y,z;
S=1;++x||++y||++z;P3(x,y,z);
}
为什么答案是2,1,1呢?我记得是若||一端为1就不必计算另一端,但是先计算++x的,那时就是2了并不是等于1,为什么后面的++y,没有跟着增值呢? 真值是 非0 而不是单单指1...2也算真值
||左边为真那么后面自然就不计算了 我个人认为是编译器的优化的问题 同意楼上的,而且其实合并把++等写在一起看起来好似很节约空间,实际上反而在搞混自己和以后的阅读者,偶还是希望楼主不要用这种容易搞错的方式编写而是分开
因为基本上这些代码从编译角度来看还是会大部分被分开的……
页:
[1]