在C语言中,执行以下语句: int a,b; a=b=c=1; ++a||++b&&++c; 结果求a,b的值。

麻烦请详解。。
顺便问一下,||(或)和&&(与)谁的优先级高?还是他俩一样??

首先执行++a,a变成2,++a表达式的值也是2,为逻辑真,于是逻辑或||右边的不再计算
这样执行后a=2,b=1, c = 1

&& 级别高于||

这个逻辑表达式中不是严格按运算符优先级计算的,只要左边可以计算出逻辑表达式的值,后面的不再运算追问

那你的意思就是说,,遇到与和或的时候,是从左到右的顺序进行运算了??
并且在++a||++b&&++c这种情况下,++b&&++c是被看做逻辑或||右边的整体进行运算,是吧?

追答

差不多这样吧
如果|| 左边的是0,则右边的++b && ++ c同样用这个规则:如果++ b 为0,则++c 不再运算

追问

那要是这样的话,,那这道题为什么不按照优先级来运算??也就是看做++a||(++b&&++c)来运算??

追答

这是C语言为了提高运行效率特别这样做的,并不是严格按优先级,如果按优先级则是先++了

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-02
都是2,还有他们的级别的一样的!

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

c程序中输入: int a,b,c; a=b=c=1; ++a||++b&&++c; 执行后abc的值为什 ...
++a||++b&&++c是逻辑表达式,它的值只有“真”与“假”两种,常用“非零”和“零”来表示。++a||++b&&++c第一个逻辑操作符为||,它是“或”操作,就是说它两边的表达式只要有一边为“真”整个表达式的值就为真。而++a使a为2,这已为“真”了,所以整个表达式的值已经肯定为“真”了,|...

大学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 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=1,b=0,c=1; 执行语句 !b||++a&&++c 后,a,b,c
也就是需要计算出 ++b和c++;但是按照优化, 只要计算出 a>0 就可以了,不需要计算出 ++b和c++,“||”在这里起到了短路的功能(短路就是,当第一条表达式能决定整条表达式的结果,那么后面的语句都不执行!),这也叫做布尔法则,给你推荐一本书叫做“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 statement 1: a=%d, b=%d...

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=0; ++a||++b&&++c;后a,b,c值分别为?
a=1,b=0,c=0 当执行++a||++b&&++c的时候,判断++a,先给a加1变为1,判断++a为true,读取逻辑运算符为“或”则停止后面的判断

int a, b, c;a=b=c=0;++a||++b&&++c;执行以上语句后,a的值为___,b的...
首先:楼主 这个是c语言。。。 这种事情对于所有的C 编译器(只要是有名的)都会优化成逻辑测试过程,以避免浪费时间。原来我回答过一次,和你的类似.你可以看看:http:\/\/zhidao.baidu.com\/question\/155452412.html 运行结果是:a=1;b 不变为0 参考资料:<a href="http:\/\/zhidao.baidu.com\/questio...

相似回答