C ++: неожиданное получение hex при печати массива - PullRequest
1 голос
/ 01 августа 2010

Я объявляю массив, используя новый

int *a = NULL;
a = new int[10];

a[0] = 23;
a[1] = 43;
a[2] = 45;
a[3] = 76;
a[4] = 34;
a[5] = 85;
a[6] = 34;
a[7] = 97;
a[8] = 45;
a[9] = 22;

PrintElements(a, 10);

void PrintElements(int * array, int size){
    for (int i=0; i<size; i++) {
        cout << endl << array[i];
    }
}

Теперь, когда я печатаю значения, я получаю эти значения

17
2b
2d
4c
22
55
22
61
2d
16

Может кто-нибудь сказать мне, что я делаю не так ...? С другой стороны, когда я не использую массив new & initialize без него, все работает нормально.

Ответы [ 4 ]

4 голосов
/ 01 августа 2010

Возможно, вы в какой-то момент написали std :: hex в cout; это останется в силе, пока не будет отменено.

2 голосов
/ 01 августа 2010

Попробуйте:

std::cout << dec << //all your stuff here

Он все еще установлен в шестнадцатеричном режиме.

2 голосов
/ 01 августа 2010

Он не имеет ничего общего со статическим или динамическим размещением массива.

Числа печатаются как шестнадцатеричные, а не десятичные значения.

1 голос
/ 01 августа 2010

17 2b 2d 4c 22 55 22 61 2d 16

Это явно шестнадцатеричные числа. Если вы печатаете их как десятичные дроби, вы получаете 23, 43 и т. Д. IOW, именно те числа, которые вы поместили в массив. Некоторая часть вашего кода, выполненная до вашего PrintElements(), по-видимому, изменяет форматирование для вывода шестнадцатеричных чисел.

...