emmm857 2022-03-24 16:36 采纳率: 100%
浏览 24
已结题

char字符在之后又用int来表示,这个程序怎么理解啊

下面程序的运行结果是
#include<stdio.h>
int main()
{ char ch[7]={"65ab21"};
int I,s=0;
for(I=0;ch[I]>='0'&&ch[I]<='9';I+=2)
s=10*s+ch[I];
printf("%d",s); }

img

  • 写回答

4条回答 默认 最新

  • 关注

    char类型可以提升为int类型,比如字符'0'提升为int类型后,值是48,也就是字符'0'的ASCII码值。
    你 这段代码的执行过程如下:

    I = 0 时,ch[I] = '6',满足for循环条件,s = s * 10 + ch[I] = 0 * 10 + 54 (这个54是'6'的ASCII码值) = 54; I+=2=2
    I = 2 时,ch[I] = 'a',不满足for循环条件, 循环结束,所以此时 s的值就是54
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 创建了问题 3月24日

悬赏问题

  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题