[英]Error in C compiler but not in c++ compiler
int a=5;
++a=a;
請找到上面的代碼段。 代碼適用於c ++(g ++)編譯器,但在使用c(gcc)編譯器時顯示錯誤。 我可以知道這個的原因嗎? c編譯器中的錯誤是“作為賦值的左操作數需要左值”。
在C ++中有運算符重載(並且你也可以重載預增量),因此為了實現一些額外的目標,預增量運算符在C ++中返回lvalue。
例如:
您的類可能實現一些指針功能,可能需要:
在這種情況下,預增量可能是有用的。
抽象代碼示例:
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 ++中,preincrement運算符產生左值,而在C中,它是rvalue。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.