Переменная-указатель не работает в функции cout - PullRequest
0 голосов
/ 21 сентября 2018

Я написал код на c ++ для проверки приращения переменной (добавлен снимок экрана).В строке 13, когда я использую «++ x» в функции печати, чтобы вывести значения x и y.Значение, которое я получаю, не равно, но адрес памяти тот же.В строке 17 я увеличил y как ++ y и получил ожидаемый равный ответ (добавлен снимок экрана) Снимок экрана моего кода .

В чем причина отсутствия неожиданных ответов в строке 13?

Мой код: 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 голосов
/ 21 сентября 2018

Предполагается, что в

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

++x будет выполнено вычисление до того, как будет получено значение y.Другими словами, вы предполагаете, что ваше выходное выражение вычисляется слева направо.Но это не обязательно так.Измените свой код на этот

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

, и вы получите ожидаемый результат.

Также новички иногда предполагают, что ++x означает, что x будет увеличен раньше всего.Но опять же, это не так, ++x просто означает, что x будет увеличиваться до того, как будет взято значение x, а не до чего-либо еще.

...