首页 > 解决方案 > 字符到整数数组

问题描述

下面的代码将值存储在字符数组中并输出整数值。你能告诉我怎么可能吗?

int main()
{ 
   char p;
   char buf[10]={1,2,3,4,5,6,9,8};
   p=(buf+1)[5];
   printf("%d",p);
   return 0;
} 

标签: c++c

解决方案


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


推荐阅读