C语言简单程序 进来看下

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:05:46
2.设x,y,z均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( )
y最后的值为什么为3? 我算是4
我明白你的意思,但是自增自减的运算符优先级必逻辑运算的优先级高 先算自增吧 所以答案应该是4

关键是操作符"||"的特殊性,操作符"||"做的是一个bool判断,返回是正确或者是错误,当操作符"||"左边的表达式已经返回为true的时候,是不会去做操作符"||"右边的计算的

这个好象不能完全用操作符优先级来判断,操作符"||"是编译器为了加快程序运行效率而特意做的处理,如果还是按照正常的优先级来的话,因为逻辑运算优先度很低,C++的这个优化等于没有了

同意楼上的.同样&&也有类似的特性,
例如:
int x,y,t;
x=y=1;
t=--x&&--y;

y最后还是1.

执行完以后,
t=1
x=4
y=3
当操作符"||"左边的表达式已经返回为1(真)的时候,是不会去做操作符"||"右边的计算的,所以只是计算了++x,但是++y的值是不会计算的,||是从左到右的计算顺序