使用C ++将char数组转换为int

时间:2019-05-18 11:44:48

标签: c++ arrays char int

有人可以向我解释这段代码是如何产生16843009的吗?如何运作?

正如我在测试中看到的那样,(int *)&x结果为0x61ff1b,据我所知,这是数组中第一个元素的地址。 *(int *)&x的结果如何16843009?谢谢。

#include <iostream>

using namespace std;


int main()
{
    char x[5] = {1, 1, 1, 1, 1};
    cout << *(int *)&x;

   return 0;;
}

1 个答案:

答案 0 :(得分:3)

如果我们将16843009写为二进制,则会得到1000000010000000100000001。用额外的零填充,得到:00000001000000010000000100000001。每8位(一个字符)的值为00000001,即1

&x是指向char数组(特别是char(*)[5])的指针。这被重新解释为指向int的指针。在您的系统上,int可能是4个字节,并且所有这四个字节都分别设置为1,这意味着您将得到一个整数,其中每8位设置为1。