一道简单的C++程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 00:48:12
设有说明“int x=1,z=1,y=1,k;",执行语句,"k=x++||++y&&++z"后,变量y的值为1 为什么

因为"||"为"或",所以,判断k值为真后,便不再执行,直接判断此表达式为真.

直接执行x++了呗
||是“或”的意思
x++||++y&&++z就是x自增或 y与z自增
k=x++时 是先把x赋给k 然后再自增

应该注意到优先级,和逻辑运算符的执行过程:
1)根据优先级,上式等价于:“k=x++||(++y&&++z)”,因为&&的优先级高于||;
2)在||运算中,只要遇到一个非零就会结束,也就是说因为x++!=0,所以整个x++||++y&&++z就是非零的,没必要进行下去了,系统自动结束了,所以++y根本就没有被执行,当然y的值就是1了。

其实就等价于(k=x++)||++y&&++z;
在||运算中,只要遇到一个非零就会结束.
k=x++;先把x的值赋给k,x再加1,"="运算返回非零所以后面的++y&&++z不执行;
执行完了k=1,x=2,y=1,z=1;

自加自减优先级最高,先执行x++,||左边已为真,右边不再执行,
祝你学习进步!!