gpt4 book ai didi

c - C语言类型转换时的指针概念

转载 作者:行者123 更新时间:2023-11-30 18:41:52 25 4
gpt4 key购买 nike

因为我是 C 语言新手。

 void main()
{
char *p;
int a=-22;
p=(char *)&a;
*p=0;
printf("%d",a);

}

当我执行此代码时,我得到的输出为 -256。当我以 %c 格式打印它时,我什么也没得到,当我将 *p 值更改为其他值时,它会给出一些其他输出。

当我们执行此命令时,输出是什么?为什么?

最佳答案

赋值*p = 0;修改a的第一个字节(因为p是指向char,即指向单字节值的指针,*p 仅更改该单字节值,但 p 指向 a 的开头,所以*pa的第一个字节)。

您的计算机很可能使用整数的小端表示法和负整数的补码。这就是为什么 32 位(4 字节)整数 a (-22) 在内存中表示为 0xEA 0xFF 0xFF 0xFF。在*p = 0;之后,a看起来是0x00 0xFF 0xFF 0xFF(注意第一个字节的变化),它对应于一个整数-256

关于c - C语言类型转换时的指针概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622466/

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