我在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/