大一新兴的C语言疑问
大一新生的C语言疑问这里c的结果是怎么来的?#includestdio.hint main(){int a2,b2,c2++a||++b&&++c
大一新生的C语言疑问
这里c的结果是怎么来的?
#include<stdio.h>
int main()
{
int a=2,b=2,c=2;
++a||++b&&++c;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
我认为c=3,但结果是c=2(这说明没有进行与运算?)
1或1与1(根据1或……,0与……规则,……部分不执行)
1或1的结果为1,然后再1与1(但是1或后面的部分不执行,还能再进行与运算吗?)
[解决办法]查查C运算符的优先级和结合顺序
[解决办法]与的优先级 高于 或吧
++a
[解决办法]++b&&++c;
----》等价于
++a
[解决办法] (++b&&++c);
[解决办法]条件1
[解决办法] 条件2 && 条件3
因为&&优先级比
[解决办法]高,所以相当于
条件1
[解决办法] (条件2 && 条件3)
只要条件1为真,那么后面不会计算了,因为无论后面如何,结果一定为真。如果为假,才会计算后面。