下面的代碼給這個錯誤:錯誤:左值要求作爲遞增操作數
int main()
{
int i = 4, j=10;
int k, l;
k = ++ (++ i);
l = (j++) ++;
cout << "k : " << k << endl;
cout << "l : " << l << endl;
return 0;
}
這將是非常有益的,如果有人可以解釋爲什麼會發生錯誤。
下面的代碼給這個錯誤:錯誤:左值要求作爲遞增操作數
int main()
{
int i = 4, j=10;
int k, l;
k = ++ (++ i);
l = (j++) ++;
cout << "k : " << k << endl;
cout << "l : " << l << endl;
return 0;
}
這將是非常有益的,如果有人可以解釋爲什麼會發生錯誤。
j++
的結果是j
的舊值,而不是對j
的引用。您不能對其應用另一個增量,因爲您無法增加值。
(而'++ i'增加'i'並且返回一個對變量本身的引用,所以你可以再次增加它,但是在同一個事物上使用多個增量操作符可能會導致問題;最好不要這樣做) –
只適用於標量類型。如果你編寫你自己的類並重載'operator ++(int)','(j ++)++;'可以是合法的。 – jrok
只要寫j + = 2。爲什麼你以錯誤的方式使用operator ++? 套用KISS。
我看到大學賽季又開始了。兩行都是**未定義的行爲**。但是既然你不會在現實生活中編寫這樣的代碼,爲什麼爲什麼要問。不要這樣寫代碼。 –
@Loki One只是不合格。另一個總是習慣於未定義的行爲,但我不確定它現在是什麼;規則在C++ 11中改變了。我同意,但不應該這樣做。 –