C语言程序设计中 这个语句if(c>='0'&&c<='9') ++ndight[c-'0']; 请问威慑么09等数字要加分号

两外为什么数组中ndight[c-'0']要是[c-'0']直接用ndight[c]不行吗C在这个程序中定位int类型的不是char类型... 两外 为什么数组中ndight[c-'0']要是[c-'0']直接用ndight[c]不行吗
C在这个程序中定位int类型的 不是char类型
展开
 我来答
lyz810
2013-06-05 · 知道合伙人互联网行家
lyz810
知道合伙人互联网行家
采纳数:7531 获赞数:31777
前端开发工程师

向TA提问 私信TA
展开全部
加引号的数字不是数字,是字符,也可以叫做是字符的ASCII码,数组下标只能是数字

而你的c一定定义为了一个char(或unsigned char)类型,所以如果直接用ndight[c]
当你输入0时,相当于是ndight[48](字符0的ascii码为48)
‘0’代表了48,如果你用c-48那么,一个0~9的字符,就会变成0~9的数字
这样你输入0,那么就相当于ndight[0]了
补充:
c定义为int在使用scanf("%d",&c);时,你输入的0那么在内存中保存的就是0
不需要用引号,所以的引号都可以去掉
当然如果你的程序的用途不是判断输入是否为0~9的功能时,可能仍需要用引号完成你需要的功能逻辑
吾守护奇迹
2013-06-05 · TA获得超过202个赞
知道小有建树答主
回答量:237
采纳率:66%
帮助的人:155万
展开全部
因为你的c变量是字符类型,需要比较的是字符c和字符0和字符9
如果不加引号,那么就是将c转换为整形数字和数字0,9比较大小
加引号意思是将字符c和字符0,9的ACSII码进行比较
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
景灵风
2013-06-05 · TA获得超过118个赞
知道小有建树答主
回答量:175
采纳率:0%
帮助的人:80.8万
展开全部
  1. 加单引号的都表示是一个字符,即char类型的数据,可以理解为ASCII码,例如‘0’实际是48;

  2. ndight[c-‘0’]==ndight[68-48]==ndight[20],而ndight[c]==ndight[68]

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cd3d6c4
2013-06-05 · TA获得超过315个赞
知道小有建树答主
回答量:262
采纳率:0%
帮助的人:279万
展开全部
加单引号表示字符类型,存放的是ASK码。
-'0'表示减去0的ASK码,将字符转换成数字。希望回答能帮到你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式