int a,b,c; a=b=c=1; ++a||++b&&++c a,b的值为2,1

main()
{ int a,b,c;
a=b=c=1;
printf( ++a||++b&&++c);
printf("%d,%d",a,b);
}

为什么a=2,b=1?
与的运算符优先级高于或。不是应该先做++b么?所以++c不做才对啊。

printf( ++a||++b&&++c);
是什么意思?

应该只有里面的部分吧!

请注意这里有一个短路或||

意思是当有一个条件成立时,不进行下一个条件

++a结果为2,成立
于是不做++b&&++c,故b和c都是1
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-06-26
&& 优先级高于 ||

编译时
++a||++b&&++c -> ++a||(++b && ++c)

运行时,|| 短路,(++b && ++c)不会执行

int a,b,c; a=b=c=1; ++a||++b&&++c。求a的值是多少?
执行inta,b,c;a=b=c=-1;++a&&++b||++c;后a,b,c值分别为 a是0 b是-1 c是0 因为++a&&++b||++c这个逻辑表达式 先计算&&因为++a是0所以这部分为0++b不执行 再计算||++c要计算所以c=0

Int a,b,c a=b=c=1 ++a=++b&&++c a,b的值为多少.
int a,b,c;a=b=c=1;++a=++b&&++c;如果是的话,因为自增运算符‘++’的优先级要高于赋值运算符‘=’,所以先执行自增运算;++a=++b&&++c -> a=b&&c [此时a,b,c均为2]然后,因为赋值运算符‘=’的优先级要高于逻辑与运算符 '&&',所以执行赋值运算;a=b&&c -> 1 && c [此...

c程序中输入: int a,b,c; a=b=c=1; ++a||++b&&++c; 执行后abc的值为什 ...
++a||++b&&++c第一个逻辑操作符为||,它是“或”操作,就是说它两边的表达式只要有一边为“真”整个表达式的值就为真。而++a使a为2,这已为“真”了,所以整个表达式的值已经肯定为“真”了,||右边的表达式就不再执行了,所以才有了211的结果。这种现象常被称为逻辑表达式运算的“短路”现象...

c语言int a,b,c.a=b=c=1. ++a||++b&&++c. 求a和b的值
结果是a=2,b=1,因为||和&&的优先级相同,||的执行规则是左边的如果为真就不再执行右边的++b,++a之后a=2,不为0,所以为真

int a,b,c; a=b=c=1; ++a‖(++b &&++c);求a,b值
a\\b\\c初是1 后面的逻辑表达式本来是先算&&再算|| 但是最终还是算||,||中当左边表达式为真时就不会计算右边表达式所以只运算++a,所以结果是a=2,b=1,c=1

int a,b,c; a=b=c=1; ++a||++b&&++c ,请解来看看?
是不是++a|++b&++c 此时|(or)和 &(and)都是位运算,答案是 2 ++a ++b ++c为1 2&2=2 2|2=2 所以答案是2 你说的这个是逻辑运算符,答案是1(逻辑运算的答案只有0,1所以为1)

已有定义“int a,b,c;”,且a=b=c=1,执行if(a++||++b) c++;语句后,b的...
不同的地方是++在前,执行完判断先执行自加,++在后,在循环内部语句执行完后再自加,对写到题来说就是,if判断是a,b都是1,执行完后,先执行++b.在执行内部语句c++,最后执行a++,执行完后全部值都为2,b也是2 另外,在输出sprinf中,++在前或在后,都是先执行自加,在输出,...

...8) 。 int a, b, c; a=b=c=1; ++a || ++b && ++c;
首先要知道三点:1.&&优先级比||高 2.||运算,如果左边为真,则右边不用再判断.&&运算,如果左边为假,则右边不用再运算 3.一般编程语言中,非零则为真 ++a || ++b && ++c <=> ++a || (++b&&++c)a=1,++a=2为真,语句就执行到这里跳过了 所以a=2,b=1,c=1 ...

大学C语言问题 执行“int a,b,c;a=b=c=1;--b&&++c||++a;"后,变量a
先看(--b&&++c),--b导致b的值为0,所以(--b&&++c)必然为假,所以c就不会加一了,C的值还是1。然后(--b&&++c)为假并不能直接断定(--b&&++c)||(++a)的真假,因为||需要两边为假才是假,所以需要判断右边的(++a),这里a自加一次变为2,(++a)为真,整个表达式(--b&&++c)||(...

int a,b,c; a=b=c=1; 执行以下语句后,a,b,c的值分别为多少?
以下是一个可能的代码示例:include <stdio.h>int main(){ int a,b,c; \/\/定义三个变量 a=b=c=1; \/\/将三个变量赋值为1 printf("Before statement 1: a=%d, b=%d, c=%d\\n", a, b, c); \/\/输出执行语句前三个变量的值 ++a||++b&&++c; \/\/执行第一个语句 printf("After ...

相似回答
大家正在搜