c - 为什么这个 C 程序的输出是 64 而不是 320?
问题描述
#include <stdio.h>
int main() {
int a = 320;
char *ptr;
ptr = (char *)&a;
printf("%d", *ptr);
return 0;
}
我期待输出是,320
但我得到的是64
. 这是什么原因?
解决方案
如果您的系统是 8(可能是这种情况),那么您在取消引用的指针CHAR_BIT
中最多可以获得 8 位。char *
在二进制中,320
值为0b000101000000
。
您的系统似乎正在使用 little-endian 字节顺序;320 的最低有效 8 位是0b01000000
,即以 10 为底的 64。
推荐阅读
- selenium-webdriver - 无法在已安装 Specflow v2.4.0 的 Visual Studio 2015 上安装 SpecFlow + Excel v1.7.3
- couchdb - 通过 Fauxton 进行的 Hyperledger Fabric CouchDB 更新被视为有效更新,但在区块链中没有记录
- sql - 在同一个表中插入不同的值
- r - 修复伯努利模拟的函数
- java - 将数据导出到 Excel 在 eclipse 中有效,但在打包为 .jar 文件时无效
- c++ - 如何从文件中读取特定字符(如“=”)之后的字符串?
- dropwizard - 是否有 Dropwizard 和 Keycloak 的有效 Oauth2 示例实现?
- json - JQ 从 JSON 文件中提取值并分配给变量
- excel - 使用按钮取消隐藏单元格行
- php - Laravel,“getimagesize(asda.jpg):无法打开流:没有这样的文件或目录”