Неправильные значения после первого удара - PullRequest
0 голосов
/ 17 мая 2019

Я делаю тестовую программу для запуска с C ++:)

Показывает неправильные значения после первой печати

enter image description here

Это код (очень простой)

#include "pch.h"
#include <iostream>
#include <Windows.h>
using namespace std;

int main()
{
    int varInt = 123456;
    char varString[] = "DefaultString";
    char arrChar[128] = "Long char array right there ->";
    int * ptr2int;
    ptr2int = &varInt;
    int ** ptr2ptr;
    ptr2ptr = &ptr2int;
    int *** ptr2ptr2;
    ptr2ptr2 = &ptr2ptr;

    while(1){
        cout << "Process ID: " << GetCurrentProcessId() << endl;

        cout << "varInt (0x" << &varInt << ") = " << varInt << endl;
        cout << "varString (0x" << &varString << ") = " << varString << endl;
        cout << "varChar (0x" << &arrChar << ") = " << arrChar << endl;

        cout << "ptr2int (0x" << hex << &ptr2int << ") = " << ptr2int << endl;
        cout << "ptr2ptr (0x" << hex << &ptr2ptr << ") = " << ptr2ptr << endl;
        cout << "ptr2ptr2 (0x" << hex << &ptr2ptr2 << ") = " << ptr2ptr2 << endl;

        cout << "Press ENTER to print again." << endl;
        getchar();
        cout << "-----------------------------------" << endl;
    }

    return 0;
}

Ожидаемые результаты очевидны, так как код опубликован следующим образом:

  • Process ID является целым числом, поэтому следует вернуть 12704 (или любое значение типа int) вместо 31a0
  • varInt также является целым числом и должно возвращать 123456 вместо 1e240

1 Ответ

3 голосов
/ 17 мая 2019

1e240 - это то же самое, что 123456 в гексе. Первая итерация выведет 123456 правильно, но после того, как вы установили базовый флаг cout в шестнадцатеричный режим, вам нужно установить его обратно в dec, чтобы снова вывести 123456 в следующем цикле.

cout << "varInt (0x" << &varInt << ") = " << dec << varInt << endl;

См. здесь для документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...