c - 为什么这段代码会产生输出 513?
问题描述
我在我的c语言期末考试中看到了这个问题,输出是513,我不知道为什么
#include <stdio.h>
int main(void){
char a[4] = {1,2,3,4};
print("%d" , *(short*)a);
}
解决方案
您的字节数组是(十六进制):
[ 0x01, 0x02, 0x03, 0x04 ]
如果您不将数组的开头视为字节数组,而是将其视为 a 的开头short
,那么您的 short 具有 value 0x01 0x02
,并且因为您的处理器是"Little Endian",它会从人类读取它的方式向后读取。我们将它作为0x0201
,这与513(Decimal)
推荐阅读
- angular-dart - 如何从当前路线获取路线ID?
- sql - SSIS 错误:无法从 SQL 命令的参数中检索目标列描述
- javascript - 情感风格内部组件
- c# - How do you add hyperlinks in CefSharp.LoadHtml?
- python-3.x - 模块“PyPDF2”没有属性“PdfFileReader”
- angular - Angular7 生产版本以错误的方式编译 SASS 样式
- python - Python - 创建一个模块的实例,得到一个错误
- ms-access - 如何使用“计数”和年龄范围在 Access 上制作表格?
- r - 多重循环创建组合列表
- blockchain - 如何使用 Ethereum Parity/IPFS 创建用于记录保存的区块链?