1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值
int a = 4;
(A)a += (a++); (B) a += (++a) ;© (a++) += a;(D) (++a) += (a++);
a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,11
我在linux下编译,D也是错误的,可能某些编译器会通过。在这里记录一下,总觉得这些面试题根本没有意义,没有谁写代码时会这样给自己找麻烦。
int a = 4;
a += (a++);
a += (++a);
//3,4,5在C++里编译不过
(a++) += a; //3
(a++) += (++a);//4
(a++) += (a++);//5
//3,4,5,6,7,8在C里编译不过
(++a) += a;//6
(++a) += (++a);//7
(++a) += (a++);//8
gdb给出的错误提示,是赋值运算的左操作数必须是左值。