代码之家  ›  专栏  ›  技术社区  ›  Asad Khan

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

  •  1
  • Asad Khan  · 技术社区  · 16 年前

    我正在使用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
    2d
    4c
    22
    55
    22
    61
    2d
    16
    

    谁能告诉我我做错了什么。。。? 另一方面,当我不使用新&时;初始化数组没有它一切正常。

    4 回复  |  直到 16 年前
        1
  •  4
  •   Brian Hooper    16 年前

    您可能已经在某个时候向cout写入了std::hex;这将继续有效,直到被推翻。

        2
  •  2
  •   Itsik    16 年前

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

        3
  •  2
  •   PrettyPrincessKitty FS    16 年前

    尝试:

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

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

        4
  •  1
  •   wilx    16 年前

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

    这些显然是十六进制数。如果你把它们打印成小数,你会得到23,43,等等。看,就是你放入数组的数字。在您的 PrintElements()