int a=5;
++a=a;
请找到上面的代码段。该代码适用于 c++(g++) 编译器,但在使用 c (gcc) 编译器时显示错误。我可以知道这是什么原因吗?c 编译器中的错误是“需要左值作为赋值的左操作数”。
int a=5;
++a=a;
请找到上面的代码段。该代码适用于 c++(g++) 编译器,但在使用 c (gcc) 编译器时显示错误。我可以知道这是什么原因吗?c 编译器中的错误是“需要左值作为赋值的左操作数”。
C++ 中有运算符重载(您也可以重载预增量),因此为了实现一些额外的目标,预增量运算符在 C++ 中返回左值。
例如:
您的类可能会实现一些指针功能,并且可能需要:
在这种情况下,预增量可能很有用。
抽象代码示例:
class MyIntPtr {
int *val;
...
public:
MyIntPtr(int *p) { ... };
MyIntPtr &operator++() { ++val; return *this; };
void operator=(int i) { *val = i; }
...
};
...
int array[10];
MyIntPtr ptr(array);
for(int i = 0; i < sizeof array; ++i)
++ptr = i;
因为在 C++ 中,预增量运算符产生一个左值,而在 C 中,它是一个右值。