【问题标题】:C++: Getting hex unexpectedly when printing arrayC++:打印数组时意外获取十六进制
【发布时间】:2011-03-23 20:02:22
【问题描述】:

我正在使用 new 声明一个数组

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 二维 4c 22 55 22 61 二维 16

谁能告诉我我做错了什么...? 另一方面,当我不使用新的和初始化数组时,一切正常。

【问题讨论】:

  • 我认为应该有人编辑标题以反映问题的真实性质。这有点误导,可能对在 C++ 中搜索动态数组的人没有帮助。 (事实上​​,它现在是 Google 上的第三次点击)

标签: c++ hex cout


【解决方案1】:

您可能已经在某个时候向 cout 写入了 std::hex;在被覆盖之前将一直有效。

【讨论】:

    【解决方案2】:

    它与数组的静态或动态分配无关。

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

    【讨论】:

      【解决方案3】:

      试试:

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

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

      【讨论】:

        【解决方案4】:

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

        这些显然是十六进制数字。如果将它们打印为小数,则会得到 23、43 等。IOW,正是您放入数组中的数字。在 PrintElements() 之前执行的某些代码显然会更改格式以输出十六进制数字。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-02-14
          • 1970-01-01
          • 2014-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-04
          • 1970-01-01
          相关资源
          最近更新 更多