有个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
哦,感谢及时回复。
因为我用的是getchar,输入的数字就是字符
当输入2的时候:
c-'2'= '2'-'2'=50-50=0……
c-2='2'-2=50-2=48
我理解的对吗?
对,
本回答被提问者采纳