如果有int a= 3,b = 4; 执运行 !a&&b++后,a、b的值为什么不变呢?按照运算符优先级顺序&&的优先级最低啊!

如果有int a= 3,b = 4;则执运行 !a&&b++后,a、b的值为什么不变呢?按照运算符优先级顺序&&的优先级最低啊!先运行!a 和 b++ 后在进行&& 运算啊?

这是由于“短路”现象引起的。
作为&&运算符,只要前一个条件(!a)为假,就不在判断后面条件的真与否,所以不管是++b,还是b++,都不会执行,所以b的值保持不变。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-27
!a为0,然后由于是&&,此时为假,所以不用管b++是否为假,所以不执行b++追问

&& 运算符优先级不是低于++运算符吗?

追答

但是执行了!a后这个&&肯定为假,所以编译器不会执行b++

第2个回答  2012-08-27
对于运算符&& ,如果左边的操作数是假(=0),则不会对右边的操作数进行判断。在本例中,就是不会执行b++ 操作,因此b的值就不会变。
至于a ,没有改变它的值的操作,也就不会改变了。
第3个回答  2012-09-04
能不能给出具体程序和你想要输出什么效果?

如果有int a= 3,b = 4; 执运行 !a&&b++后,a、b的值为什么不变呢?按照...
作为&&运算符,只要前一个条件(!a)为假,就不在判断后面条件的真与否,所以不管是++b,还是b++,都不会执行,所以b的值保持不变。

int a=3,b=4,c=5;执行表达示,a++>&&c--&&++c后,a,b,c的值
例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b =c; 则执行结果就变成a = b = c = 5,不能达到预期的...

有定义int a=3,b=4,c=5;执行完表达式a++>--b&&b++>c--&&++c后,a,b...
a++>--b是取a加1前的值3和b减1后的值3比大小,结果是假,所以&&的最终结果肯定是假,后面的运行都不继续算了。所以a=4,b=3

int a=3,b=4,表达式“!(a=2)&&b=1&&0的值是,表达式求解后,b=
b=4,因为!(a=2)为假,对于逻辑与判断来说一旦有一个条件为假那么整个表达式的值必然也为假,其他条件没必要判断了,于是后面的b=1等操作将不会被执行,那么b还是4

int a=3,b=4,c=5;执行完表达式a++>--b&&b++>c--&&++c后,a,b,_百度知 ...
最后结果:a==4,b==3,c==5。

请教一下当a=3,b=4时,a&&a 的值是多少,a&&b 的值又是多少,a||a 的值...
a&&a 是1 a&&b 是0 a||a,a||b都是1

如果有"int a=5,b=3;"那么在执行“!a&&b++"之后,a和b的值分别是多少?为...
a=5 b=3&&运算符有“短路”特性,当第一个操作数已经确定为“假”,第二个操作数就不再执行了,因为已经可以确定整个表达式的值为“假”了。本题中!a为“假”,后面的b++操作不再执行。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 百度网友fdc12bf 2012-03-19 · 超过20用户采纳过TA的回答...

设int a=3,b=4;求表达式a&&b的值
a=3 为真,b=4 为真 两个真进行逻辑且结果也是真, 即 结果是 1

C语言题目:设a=3,b=4,c=5,执行!(x=a)&&(y=b)&&0 逻辑表达式后,变量x 和...
C,3、不确定。由x=a得x==3 则!x==!3==0 ,而逻辑与运算中只要有一个环节为0(假),那结果就是0, 于是后面的y=b就没必要执行了,那么y的值就无法确定了。C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if⋯else语句和switch语句等。可以用于实现函数的逻辑...

Int a=3,b=4,c=5,执行完语句t =!(a+b)+c-1&&b+c\/2后t的值是?
int a=3,b=4,c=5;int t;t=!(a+b)+(c-1)&&b+c\/2;printf("%d",t);t=1

相似回答
大家正在搜