这个C语言程序的结果为什么是 t=1,y=3 ,x=4 ,怎么得到的?#include void main() {\x05int x,y,t;\x05x=y=3;\x05t=++x||++y;\x05printf("%d,%d,%d",t,y,x);}

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 04:55:00
这个C语言程序的结果为什么是 t=1,y=3 ,x=4 ,怎么得到的?#include void main() {\x05int x,y,t;\x05x=y=3;\x05t=++x||++y;\x05printf(

这个C语言程序的结果为什么是 t=1,y=3 ,x=4 ,怎么得到的?#include void main() {\x05int x,y,t;\x05x=y=3;\x05t=++x||++y;\x05printf("%d,%d,%d",t,y,x);}
这个C语言程序的结果为什么是 t=1,y=3 ,x=4 ,怎么得到的?
#include
void main()
{
\x05int x,y,t;
\x05x=y=3;
\x05t=++x||++y;
\x05printf("%d,%d,%d",t,y,x);
}

这个C语言程序的结果为什么是 t=1,y=3 ,x=4 ,怎么得到的?#include void main() {\x05int x,y,t;\x05x=y=3;\x05t=++x||++y;\x05printf("%d,%d,%d",t,y,x);}
因为后面的||只一个逻辑运算,而且是是一个或运算,只要前面一个是大于等于1的数,后半部分就不会继续做下去,所以经过逻辑的推理,t=1;x经过自加,等于4,y在这个式子中没有任何的运算,因此不变,还是原来的3.

||逻辑运算 它的求值方式是短路求值 ,只要前面为真后面它就不会求值了
上式就是t=(++x||++y)
++x=4非零为真,后面的就不会计算了,t=1,y=3

先执行++x,x=4,在C语言中,非零即为真,故逻辑运算||前为真,不再做后面的++y,此时t=1,y=3.
.(同样的,如果是x=y=1,t=--x&&--y,则t=0,x=0,y=1)