-2

我是一个完全的编程初学者,大约 2 天前才开始学习 C++。有一个奇怪的问题,我不太明白。

int main()
{
   int value1;
   int value2;
   cin >> value1 >> value2;
   value1 = (value1 > 5) ? value1++ : value1;
   value2 = value2++;
   cout << value1 << " " << value2 << endl;
}

好吧,让我们说 value1 = 6 和 value2 = 2。好吧,显示是 6 3。据我所知,后自增运算符将其操作数加一,但它所使用的当前表达式的值仍然是“un-增量”值,这对于 value2 的情况是有意义的。value2 被赋值给表达式“value2++”并且 value2++ 的值为 2,一旦它被赋值,++ 的效果就会发生,并将 value2 的值加 1。但是对于 value1 的情况呢?为什么在上面的代码中使用后自增运算符之后,wansnt value1 的值会自增?

4

1 回答 1

0

错误是您的分配value1实际上是value = value1++;......所以您想要读取 value1、6 的当前值,然后将其递增,但还要将该 6 存储在其他地方(覆盖发生递增的位置)。

改为使用value1 = (value1 > 5) ? value1 + 1 : value1;

于 2013-11-10T11:44:11.020 回答