int a=5;
++a=a;
請找到上面的代碼段。該代碼適用於C++(g ++)編譯器,但在使用c(gcc)編譯器時顯示錯誤。我可以知道這個的原因嗎? c編譯器中的錯誤是「作爲賦值的左操作數需要左值」。C編譯器錯誤,但不是C++編譯器中的錯誤
int a=5;
++a=a;
請找到上面的代碼段。該代碼適用於C++(g ++)編譯器,但在使用c(gcc)編譯器時顯示錯誤。我可以知道這個的原因嗎? c編譯器中的錯誤是「作爲賦值的左操作數需要左值」。C編譯器錯誤,但不是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++ – bikram990 2013-05-09 05:29:54
相關:http://stackoverflow.com/questions/3690141/multiple-preincrement -al-variable-in-cc – 2013-05-09 05:30:23