Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用c++;_C++_Arrays_Char_Int - Fatal编程技术网

C++ 使用c++;

C++ 使用c++;,c++,arrays,char,int,C++,Arrays,Char,Int,有人能解释一下这个代码是如何产生的吗?它是如何工作的 正如我在测试中看到的,(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;; }

有人能解释一下这个代码是如何产生的吗?它是如何工作的

正如我在测试中看到的,
(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;;
}
#包括
使用名称空间std;
int main()
{
char x[5]={1,1,1,1,1};

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


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

如果我们将16843009作为二进制写入,我们将得到
1000000100000000000001
。用额外的零填充它,我们得到:
000000010000000 100000010000001
。每8位(字符)有一个值
00000001
,即
1


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

您试图实现什么?Ps:尝试将其打印为十六进制值instead@JVApen我只是想了解它是如何工作的,我读过了为什么?第一个试图在我的代码中使用这个的人将不得不为自己辩护。你想实现什么?Ps:试着将它打印为十六进制值instead@JVApen我只是想了解它是如何工作的。我读到了?为什么?第一个试图在我的代码中使用它的人必须为自己辩护。