c语言中“switch(c-'2')和switch (c-2)有什么区别?

有个C语言的问题,switch语句中switch(c-'2')和switch(c-2),c为输入的数,这两个有什么区别?测试的答案不同。。。
#include <stdio.h>
main()
{
int c;
while((c=getchar())!='\n')
{
switch(c-'2')
{
case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;
}
}
}
如果用switch(c-'2'),‘输入数字2473时答案为668977,如果用switch(c-2)答案为4695..
请高手给予分析为盼,谢谢。

c - '2' == c - 50,与c - 2差别是明显的。

对于c - '2'来说,这里的c通常是char类型,其值可能是'2','3',......‘8’,‘9’,那么c - '2'就是一个差值,这个值代表c与'2'的距离。

对于c - 2来说,这里的c可能是一个int类型,实际效果就是求两个整数的差。

扩展资料:

int型和char型变量相互赋值

整型和字符型是互通的,他们是在内存中存储的本质是相同的,只是存储的范围不同而已,整型可以是2字节,4字节,8字节,而字符型只占1字节。

Int:

标准函数INT(X)其基本功能是得到一个不大于X的最大整数,如INT(3.59)=3,INT(-2.01)=-3。INT函数是一个用途很广的函数,在教学中能有目的的分列其使用技巧。

参考资料来源:百度百科-char (计算机语言关键字)

参考资料来源:百度百科-INT

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-01
c - '2' == c - 50,与c - 2差别是明显的。
对于c - '2'来说,这里的c通常是char类型,其值可能是'2','3',......‘8’,‘9’,那么c - '2'就是一个差值,这个值代表c与'2'的距离。
对于c - 2来说,这里的c可能是一个int类型,实际效果就是求两个整数的差。
第2个回答  推荐于2017-09-23
你用的getchar,输入的数字就是字符
2473,
当输入2的时候 '2'-'2'=0 则输出case 1和case 2后面的东西, 6 6
当输入4的时候 '4'-'2'=2 则输出case 2的东西 ,8
当输入7的时候 输出default的东西 9
当输入3的时候输出case 1和case2的东西 77
懂没?追问

哦,感谢及时回复。
因为我用的是getchar,输入的数字就是字符

当输入2的时候:
c-'2'= '2'-'2'=50-50=0……
c-2='2'-2=50-2=48
我理解的对吗?

追答

对,

本回答被提问者采纳
第3个回答  2013-02-12
c-'2',意思是 c 减去字符2的ascii码
c-2,意思是 c 减去 数字 2

明白?
第4个回答  2013-02-12
c-2就是c-2,而c-'2'是c-0x32或c-50。
相似回答