设 int x= -1;执行表达式++x||++x||++x;后x的值为何是1吗?

来源:百度知道 编辑:UC知道 时间:2024/05/16 07:44:41
设x,y,z均为int型变量执行语句:x=y=3;t=++x||++y;后y的值为何是3
当c的值不为0时,能正确将c的制赋给a,b的是c
b.(a=c)||(b=c);
c.(a=c)&&(b=c);b为何不对?
定义 int a=0,b=5;执行(a<b)||(a=10)&&(b=15);a,b的值为何是0和5

1.t=++x||++y这是一个或运算,当||前面的表达式为真时(这里是++x的值不为0时),就不会执行||后面的表达式了,所以y的值还是3。
当||前面的表达式不为真时,会执行||后面的表达式
||或运算只要判断一个为真、,整个表达式就为真。

2.(a=c)||(b=c),因为C的值不为0,所以||前面的表达式(a=c)为真,就不会再执行||后面的表达式(b=c),所以这个只能将c的值赋给a,而没有将c的值赋给b

3.(a=c)&&(b=c),这是个与运算,当&&前面的表达式为真时,继续执行&&后面的表达式,如果后面的表达式为真,则这整个表达式的值就为1;如果后面的表达式不为真时,则整个表达式的值就为0;
当&&前面的表达式不为真时,就不执行&&后面的表达式了。
&&与运算必须两个表达式全部为真时,整个表达式才为真。

4.a<b为真,所以后面的不执行了

x=y=3 这时x=3 y=3
t=++x||++y
++x=4 为真(非0即1)
在||中 只要前面一句为真,则后面不用执行
也就是说++y没有执行,所以还是3

|| 这个或在C里面实现如下:只要有一个满足就不看其他的表达式,直接出结果。
第一个问题里,因为++x非0,所以表达式为真,所以不用再看||后面的表达式就可以得出t=1,
第二个问题:同理可知b=c是不会做的,因为a=c已经为真,
第三个:同理a<b为真,所以后面的不用看了