gpt4 book ai didi

c++ - 变量的字节表示形式出现意外结果

转载 作者:可可西里 更新时间:2023-11-01 18:37:07 25 4
gpt4 key购买 nike

我扫描了一个 int 变量的字节表示,得到了一些意想不到的结果。

如果我这样做

int a = 127;
cout << (unsigned int) *((char *)&a);

我得到了预期的 127。如果我这样做

int a = 256;
cout << (unsigned int) *((char *)&a + 1);

我按预期得到 1。但如果我这样做

int a = 128;
cout << (unsigned int) *((char *)&a);

我有 4294967168,好吧……非常奇特。

问题是:当查看值为 128 的 int 变量的第一个字节时,有没有办法得到 128?

最佳答案

出于与 (unsigned int)(char)128 为 4294967168 相同的原因:char 在大多数常用系统上默认已签名。 128 不适合带符号的 8 位数量,因此当您将其转换为 char 时,您会得到 -128(十六进制的 0x80)。

然后,当您将 -128 转换为 unsigned int 时,您会得到 232 - 128,即 4294967168。

如果你想得到 +128,那么使用 unsigned char 而不是 char

关于c++ - 变量的字节表示形式出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com