执行下列语句的输出结果(C语言题目)int a,b,c;a=b=c=1;++a||++b&&++c看不懂为什么是这样的.

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/09 10:12:23
执行下列语句的输出结果(C语言题目)inta,b,c;a=b=c=1;++a||++b&&++c看不懂为什么是这样的.执行下列语句的输出结果(C语言题目)inta,b,c;a=b=c=1;++a||+

执行下列语句的输出结果(C语言题目)int a,b,c;a=b=c=1;++a||++b&&++c看不懂为什么是这样的.
执行下列语句的输出结果(C语言题目)
int a,b,c;
a=b=c=1;
++a||++b&&++c
看不懂为什么是这样的.

执行下列语句的输出结果(C语言题目)int a,b,c;a=b=c=1;++a||++b&&++c看不懂为什么是这样的.
++a||++b&&++c
因为&&的优先级比||高,所以上式相当于++a||(++b&&++c)或的两旁只要一个为真整个表达式就是真,所以计算++a后a为2为真,就不再计算逻辑或之后的表达式了,故b与c的值仍是1,如果改为
(++a||++b)&&++c
则a=2,b=1,c=2,逻辑与符号要求两边表达式值都为真时表达式值为真,所以左边(++a||++b)
的逻辑或表达式,++a为2值为值,(++a||++b)表达式为真,b没有参与自增,逻辑与右边++c为2为真,这时才能得出整个表达式值为真,所以a=2,b=1,c=2
希望能够帮到您.