大一新生,远在他校的朋友问我的问题,我也不是很懂QAQ
希望4个选项都解说一下
如果这个a+=a-=a+a正确的话第一题的A选项为什么错误呢?为什么结果又是-18呢?
不明白(,)中,的含义,返回值似乎都是,右边的值
个人觉得我不明白是基础概念不好,有劳各位解答了~
大一新生,远在他校的朋友问我的问题,我也不是很懂QAQ
希望4个选项都解说一下
如果这个a+=a-=a+a正确的话第一题的A选项为什么错误呢?为什么结果又是-18呢?
不明白(,)中,的含义,返回值似乎都是,右边的值
个人觉得我不明白是基础概念不好,有劳各位解答了~
(1)
error: lvalue required as left operand of assignment
a += -a += a * a;
-a不能出现在+=的右边,如果是
a += a += a * a;
是合法的。
(2)
涉及条件表达式短路,&&优先级高,所以表达式是 ++i||(++j&&++k);
因此,编译器为了优化,如果++i是true,无论(++j&&++k)是不是true,整个表达式都是true了,所以后面不计算了。
所以++i被执行,是2,++j ++k不执行,还是1,而int i = -1, j = 1, k = 1, x;因为左边是false(0),必须对右边求值,所以结果就是1,0,2,2