c++中char变量的内存分配问题,通过visual studio调试



char是c++中具有一个字节的类型,在某种程度上,我们可以将其用作signedunsigned,改变它可以分配的值。我是在Visual Studio中使用调试器的新手,也在阅读有关内存的内容。我使用下面的代码:

int main() {
signed char a = 170;
signed char* b = &a;
}

a变量的范围应该是-128到127,变量的值被转换并-86被解决,但是当我得到b变量的值时,这是内存分配,看看那里有什么我得到:

0x0019F99B  aa cc cc cc cc 6d f3 ea 54 c4 f9 19 00 13 1f a0 00 01 00 00 00 60 78 76 00 d0 b5 76 00 01 00 00 00 60 78 76 00 d0 b5 76 00 20 fa 19 00 67 1d a0 00 e9 f0 ea 54 23 10 a0 00 23 10 a0 00 00 60  ªÌÌÌÌmóêTÄù.... .....`xv.еv.....`xv.еv. ú..g. .éðêT#. .#. ..

,aa的十六进制值为170。发生了什么事?

170文字是由0x000000AA表示的int

当您将其转换为单个字节的signed char时,它只是截断字节,因此您最终得到0xAA,它恰好是双补符号中的-86

相关内容

  • 没有找到相关文章

最新更新