C ++:打印数组时意外获取十六进制

时间:2010-08-01 10:13:08

标签: c++ hex cout

我使用新的

声明一个数组
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

有人可以告诉我,我做错了什么......? 另一方面,当我不使用新的&amp;在没有它的情况下初始化数组一切正常。

4 个答案:

答案 0 :(得分:4)

你可能在某个时候给cout写了一个std :: hex;这将一直有效,直到被覆盖。

答案 1 :(得分:2)

它与数组的静态或动态分配没有任何关系。

数字打印为十六进制值,而不是十进制值。

答案 2 :(得分:2)

尝试:

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

它仍然以十六进制模式设置。

答案 3 :(得分:1)

  

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

这些显然是十六进制数字。如果你把它们打印成十进制数,你会得到23,43等等。这就是你放入数组的数字。在PrintElements()之前执行的部分代码显然会更改格式以输出十六进制数字。