作业帮 > 综合 > 作业

4.执行下列语句后a的值为( ),b的值为( C ).int a,b,c; a=b=c=1; ++a|| ++b &&

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/05 12:46:44
4.执行下列语句后a的值为( ),b的值为( C ).int a,b,c; a=b=c=1; ++a|| ++b &&
int a,b,c;
a=b=c=1;
++a|| ++b && ++c;
A) 错误 1     B) 2 2     C) 2 1     D) 1 1
||的优先级高,所以++a||++b作为&&的左表达式参加运算
a的值为1,++a的结果为非零,所以||成立,忽略了++b
所以a的值被修改,b的值没有被修改
故a=2,b=1
再问: 为什么只有a的值被修改,b的没被修改?
再答: 因为||对流程有控制性, 如果||的左表达式成立,就不会对他的右表达式进行计算, 在你的例子中,++a的值已经是2,是非零 那么||已经满足(有一个值是真就满足),所以这时就忽略了右表达式的计算 要仔细看看书,这个知识点,书上都会有的