我已经用c ++编写了一个代码来检查变量增量(添加了屏幕截图)。在第13行中,当我在打印功能中使用“ ++ x”来打印x和y的值时。我得到的值不相等,但内存地址相同。 在第17行中,我将y递增为++ y,并且得到了预期的等于 (已添加屏幕截图)My Code Screenshot。
在第13行中没有得到意外的ans是什么原因?
我的代码:https://gist.github.com/mefahimrahman/7fb0f45ae1f45caeb97d5aaeb39c4833
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x = 7, &y = x;
cout << "Whithout Increment: ";
cout << &x << " " << &y << endl;
cout << x << " " << y << endl;
--x;
cout << "After x Increment: ";
cout << &x << " " << &y << endl;
cout << ++x << " " << y << endl;
y++; cout << "After y Increment: ";
cout << &x << " " << &y << endl;
cout << x << " " << ++y << endl;
}
答案 0 :(得分:3)
您假设在
cout << ++x << " " << y << endl;
++x
将在访问y
的值之前进行评估。换句话说,您假设您的输出表达式是从左到右求值的。但这并非一定如此。将您的代码更改为此
++x;
cout << x << " " << y << endl;
您将获得期望的输出。
新手有时也会假设++x
意味着x
将先递增。但这又是不对的,++x
只是意味着x
将在采用x
的值之前递增,而不是在其他任何值之前。