c语言中c-'2'是怎么运行的?

#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;
}
}
}

在 C 语言中, c-'2'  是一个表达式,它的运行过程涉及到字符类型的运算。
具体来说, c  是一个字符变量, '2'  是一个字符常量。在这个表达式中,减号  -  被用于执行字符的算术运算。
当执行  c-'2'  时,C 语言会将字符  c  和字符  '2'  进行比较,并计算它们之间的差值。这里的差值是基于字符在 ASCII 码表中的顺序来计算的。
例如,如果  c  的值是字符  '5' ,那么  c-'2'  的结果将是字符  '3' 。这是因为在 ASCII 码表中,字符  '5'  的码值比字符  '2'  的码值大 3,所以减法运算的结果就是字符  '3' 。
需要注意的是,这种字符运算的结果是一个字符,而不是一个整数。它表示了字符在 ASCII 码表中的相对位置差异。
另外,如果  c  是一个数字字符(0-9),那么与字符  '2'  进行减法运算可能不会得到预期的结果,因为数字字符在 ASCII 码表中的顺序与它们的数值表示不完全一致。
温馨提示:内容为网友见解,仅供参考
第1个回答  2024-02-23
在这段 C 语言代码中,c-'2'是将字符变量 c 的 ASCII 值减去字符 '2' 的 ASCII 值。在 ASCII 编码中,字符 '2' 的 ASCII 值是 50。因此,当 c 为 '2' 时,表达式 c-'2' 的值为 0;当 c 为 '3' 时,表达式的值为 1;以此类推。
下面解释一下代码的运行逻辑:
- 当用户输入字符时,程序会逐个读取字符并进行处理,直到遇到换行符 '\n' 结束。
- 对于每个输入的字符 c,程序会根据 switch 语句判断 c-'2' 的值,并执行相应的 case 分支。
- 如果 c-'2' 的值为 0 或 1,程序会输出 c+4;
- 如果 c-'2' 的值为 2,程序也会输出 c+4,并且执行 break 语句跳出 switch 语句;
- 如果 c-'2' 的值为 3,程序会输出 c+3;
- 如果 c-'2' 的值不在上述范围内,程序会输出 c+2。
- 注意,在 switch 语句中,没有针对 c-'2' 的值为负数的情况进行处理,因此可能会出现意料之外的结果。
请注意,这段代码缺少函数 main 的返回类型声明和参数列表声明,应该修改为 `int main(void)`。另外,建议在每个 case 分支最后加上 break 语句,以避免出现意外的控制流程。

c语言中c-'2'是怎么运行的?
在 C 语言中, c-'2'  是一个表达式,它的运行过程涉及到字符类型的运算。具体来说, c  是一个字符变量, '2'  是一个字符常量。在这个表达式中,减号  -  被用于执行字符的算术运算。当执行  c-'2'  时,C 语言会将字符...

有个C语言的问题,switch语句中switch(c-'2')和switch(c-2),c为输入...
c-'2'==0 c-2==0x30==48 如果switch(c-'2'),则c-'2'==0,所以case 0:成立,因为其后没有break,顺序执行case1:c+4=='6',输出6 顺序执行case2:c+4=='6',输出6,然后break结束 如果switch(c-2),则c-2==0x30==48,所以default:成立,c+2=='4',输出4,然后break结束 ...

c语言中“switch(c-'2')和switch (c-2)有什么区别?
c - '2' == c - 50,与c - 2差别是明显的。对于c - '2'来说,这里的c通常是char类型,其值可能是'2','3',...‘8’,‘9’,那么c - '2'就是一个差值,这个值代表c与'2'的距离。对于c - 2来说,这里的c可能是一个int类型,实际效果就是求两个整数的差。

C语言 从键盘键入2473<回车> 则下面程序的运行结果是
c读取2是 switch(c-'2')相当与switch(0) 所以会输出2个2+4=6;即全面的2个6,case语句只有碰到break才会跳出,不然会一直运行先去;c读取4时,switch(c-'2') 相当于 switch(2) 所以输出4+4 = 8;c读取7时,switch(c-'2') 相当于 switch(5)没有找到对应的case,则输出default,7+...

一道C语言的题
首先说一下答案是A。getchar这个函数呢,是一个个读取字符的,“while((c=getchar())!=’\\n’)”这个语句的意思是当读取的字符不为Enter键即开始循环,如果一旦遇到Enter键就不执行,(PS:<CR>就是Enter键的意思),所以大致过程如下:输入2:c=2,则c-‘2’为0。所以执行case0:(这是一条...

c语言“switch(c-'2')是什么意思
一般来说此时c的值是一个数字字符,编写者懒得转换成数字再和2比较差值所以这么写,因为‘4’-‘2’和4 - 2 一样都是2. 然后对这个差值进行switch状态分析。程序员都是懒惰的……

c语言,为什么输入2473后结果是668977,程序是怎么运行的?
1. 接收2,即c=‘2’,减去'2',结果为0,就会走case 0,1,2,就会输出两个c+4,即输出两个6 2.接收4,即c=‘4’,减去'2',结果为2,就会走case 2,就会输出一个c+4,即输出8 3.接收7,即c=‘7’,减去'2',结果为5,就会走default,就会输出一个c+2,即输出9 4.接收3,即c=...

C语言高手进!switch case语言问题给解释一下答案
输入2,switch(c-'2')结果是0,switch在没有遇到break和结束时会继续运行,所以要输出66.输入4,switch(c-'2')结果是2,然后直接运行 case 2:putchar(c+4);break; 即输出('4'+'4'):8 输入7,switch(c-'2')结果是5,因为没有case 5,所以执行缺省default:putchar(c+2);break;即输出('9'...

C语言中C--- 是什么意思?
C语言中的"C--"是一个运算符,它代表了一个特定的操作过程。当你看到像"a = c---b"这样的表达式时,它的实际含义并不是简单的"a = c--b",而是通过分步骤解释:首先,"c--"是一个自减运算符,它会先将变量c的值减1,即c = c - 1。这个操作是先执行的,然后才影响到后面的表达式...

c语言中ch-'0'这是什么意思,为什么能把字符转化为对应的ASCII值,看...
首先,我们平时看到的 'a', 'b', 'c', 'd', '1', '2', '3'……等等是一个字符,在ASCII表中有一个对应的整型值,称为ASCII值。其次,我们并不在意 ‘a', 'b', 'c', 'd' ……等字符的ASCII值,平时我们容易搞混的是 '1', '2', '3' ……等数字字符的ASCII值,字符'1'...

相似回答
大家正在搜