先来看这样一道题目:(某企业面试题)
设有int a=1;那么下面几条语句哪些有错,哪些正确?
A. ++a += ++a; B. ++a += a++; C. a++ += a++; D. a++ += ++a;
不同点
i++:
- 返回没有+1之前的i值。
- 返回一个右值,不能对右值进行赋值操作。
- 在机器码中占用两个寄存器,一个存储没有+1之前的值,一个存储加1之后的值。效率较低。
++i:
- 返回+1 之后的i值
- 返回一个左值,可以对左值进行赋值操作。
- 在机器码中占用一个寄存器,存储了加1之后的值。效率较高。
相同点
- 都是在调用时就计算了i+1。
所以C,D是不正确的,不能对a++进行赋值操作。