指针变量在cout函数中不起作用

时间:2018-09-21 10:28:57

标签: c++ pointers increment

我已经用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;
}

1 个答案:

答案 0 :(得分:3)

您假设在

cout << ++x << " " << y << endl;

++x将在访问y的值之前进行评估。换句话说,您假设您的输出表达式是从左到右求值的。但这并非一定如此。将您的代码更改为此

++x;
cout << x << " " << y << endl;

您将获得期望的输出。

新手有时也会假设++x意味着x将先递增。但这又是不对的,++x只是意味着x将在采用x的值之前递增,而不是在其他任何值之前。