c++ - 字符到整数数组
问题描述
下面的代码将值存储在字符数组中并输出整数值。你能告诉我怎么可能吗?
int main()
{
char p;
char buf[10]={1,2,3,4,5,6,9,8};
p=(buf+1)[5];
printf("%d",p);
return 0;
}
解决方案
p=(buf+1)[5];
是相同的
p=*(buf+1+5);
和一样
p=*(buf+6);
和一样
p=buf[6];
所以看看buf
char buf[10]={1,2,3,4,5,6,9,8};
^ ^ ^ ^ ^ ^ ^ ^
0 1 2 3 4 5 6
^
^
The element read
所以p
设置为 9
因此
printf("%d",p);
打印 9
这是因为%d
意味着“打印整数值”,并且任何大小小于 int(如 char)的整数在调用时都被提升(又名转换)为 intprintf
推荐阅读
- bash - 条件执行 - 多个命令
- javascript - Javascript:如何区分对象文字
- java - 在 Java 中处理 GraphQl 响应的最佳方法是什么
- django - (missing_code)响应OAuth Django中缺少代码参数
- java - 这个 java 递归如何在具有 2 个参数的方法中工作
- javascript - 将文本内容解析为特定的 json 格式
- user-interface - JavaFX:更新 UI,但不是来自 GUI 上的操作,而是发送的信息?
- javascript - javascript LET 变量 - 为什么在初始化变量之前记录时出现未定义而不是错误?
- django - Annotation in Django Admin
- c++ - GoogleMock:如何保存要在模拟的下一次调用中使用的参数