我无法理解这个简单的c代码的输出。当我们将一个int值转换为char指针时会发生什么?
int main(void) {
int a =320;
char *ptr;
ptr=(char *)&a;
printf("%d",*ptr);
return 0;
}
输出是64.但我无法弄清楚逻辑。签名字符的大小在这里发挥作用吗?
答案 0 :(得分:1)
320是ave
十六进制。 char是一个字节(两个十六进制数字),因此使用0x140
进行转换和打印将打印%d
的十进制值,恰好是64。