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类型 展开
C在这个程序中定位int类型的 不是char类型 展开
展开全部
加引号的数字不是数字,是字符,也可以叫做是字符的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的功能时,可能仍需要用引号完成你需要的功能逻辑
而你的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的功能时,可能仍需要用引号完成你需要的功能逻辑
展开全部
因为你的c变量是字符类型,需要比较的是字符c和字符0和字符9
如果不加引号,那么就是将c转换为整形数字和数字0,9比较大小
加引号意思是将字符c和字符0,9的ACSII码进行比较
如果不加引号,那么就是将c转换为整形数字和数字0,9比较大小
加引号意思是将字符c和字符0,9的ACSII码进行比较
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加单引号的都表示是一个字符,即char类型的数据,可以理解为ASCII码,例如‘0’实际是48;
ndight[c-‘0’]==ndight[68-48]==ndight[20],而ndight[c]==ndight[68]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加单引号表示字符类型,存放的是ASK码。
-'0'表示减去0的ASK码,将字符转换成数字。希望回答能帮到你
-'0'表示减去0的ASK码,将字符转换成数字。希望回答能帮到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询