下面的代码给这个错误:错误:左值要求作为递增操作数
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中改变了。我同意,但不应该这样做。 –