这个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/07/13 22:47:51
xS]OP+HdWbc7nl ƈkRub0|,Ĥ[23{{
&n4'}y1'ؾ|inn|
l;V,QVZ"%D}$~SC*)_OCKKeY*-
"yճ 0,ÊYnf6 mhioP,n6b&
rk0wl1̹!_'[b,&7zؐRaT/#6.WĴ<]0Տg1`0bIe`Z B̃n92ƶG5plװ}H
3)O.RTQ]l"5'"Jضmq2<ЭՅXEl\Zy)+Q11^-Q䆪k!jtC=~,v02t-_e0wd)%KJLxX[ Ȯ:@ !: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);
}
这个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)