【问题标题】:c language type conversionc语言类型转换
【发布时间】:2017-03-03 16:09:50
【问题描述】:

我无法理解这个简单的 c 代码的输出。当我们将 int 值类型转换为 char 指针时会发生什么?

int main(void) {
int a =320;
char *ptr;
ptr=(char *)&a;
printf("%d",*ptr);  
return 0;
}

输出是 64。但我无法弄清楚逻辑。签名字符的大小在这里起作用吗?

【问题讨论】:

    标签: pointers casting char int type-conversion


    【解决方案1】:

    320 是十六进制的0x140。一个字符是一个字节(两个十六进制数字),因此使用%d 进行转换和打印将打印0x40 的十进制值,恰好是64。

    【讨论】:

    • 谢谢...你能告诉我为什么 320 首先转换为十六进制吗?是因为计算机架构还是c语言架构?提前谢谢
    • 没有转换成十六进制;我将其转换为示例:-)。 0x140 320(十六进制)。使用位和字节时,使用十六进制比使用十进制要容易得多。如果 8 位是一个字节,那么十进制格式怎么解释?
    • k...现在我可以理解了... unsigned char 可以取的最大值是 255...signed char 是 127(-128 是低端)所以 320 的前半字节是被忽视了……谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2013-02-03
    • 1970-01-01
    • 2015-09-26
    相关资源
    最近更新 更多