我在C语言期末考试中看到了这个问题,输出为513,但我不知道为什么

#include <stdio.h>
int main(void){
    char a[4] = {1,2,3,4};
    print("%d" , *(short*)a);
}

最佳答案

您的字节数组为(十六进制):

[ 0x01, 0x02, 0x03, 0x04 ]


如果将数组的开头不视为字节数组,而是作为short的开头,则您的short的值为0x01 0x02,并且由于您的处理器为"Little Endian",因此它会从人类的阅读方式中反向读取它。我们将其作为0x0201,与513(Decimal)相同

关于c - 为什么此代码会产生输出513?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56599337/

10-10 01:44