第六章——字符型数据 第二节——字符型常量的运算

第六章——字符型数据 第二节——字符型常量的运算

亓翎_Re-Tikara Lv5

一、基本概念:字符型常量的数值本质

1.1 字符常量的整型属性

字符型常量在C语言中本质上是一个整数,其值为对应字符的 ASCII 码值
例如:

'A' == 65    // 真(ASCII 码值比较)  
'0' == 48    // 真  

核心规则

  • 字符常量可直接参与整数运算(如 'A' + 1)。
  • 可进行关系运算(如 'a' > 'Z')。

1.2 真题实战:ASCII 码运算

例题

char ch = 'B';  
printf("%c %d", ch, ch);  

输出B 66(字符 B 的 ASCII 码为 66)


二、运算规则与陷阱

2.1 常见运算场景

运算类型 示例 结果解释
整数运算 'A' + 32 对应小写字母 a(ASCII 97)
关系运算 'a' > 'A' 真(ASCII 码 97 > 65)
赋值运算 int i = 'Z'; i 的值为 90(ASCII 码)

2.2 真题解析:大小写转换陷阱

题目:以下哪项 不能 将大写字母转换为小写字母?

A. c = (c - 'A') % 26 + 'a';  
B. c = c + 32;  
C. c = c - 'A' + 'a';  
D. c = ('A' + c) % 26 - 'a';  

答案D(逻辑错误,('A' + c) 无法正确计算偏移量)
解析:选项 D 的错误在于 错误地使用 ‘A’ + c 作为模运算的基数 ,而非基于 c - ‘A’ 的偏移量。这种设计导致无法正确计算小写字母,甚至可能生成非法字符值。


三、进阶应用:字符运算的实际用途

3.1 加密与解密

通过字符运算实现简单的凯撒加密:

char ch = 'A';  
ch = (ch - 'A' + 3) % 26 + 'A';  // 向后偏移3位,结果为 'D'  

原理:利用 ASCII 码的连续性进行模运算。

3.2 输入验证

判断字符是否为小写字母:

if (ch >= 'a' && ch <= 'z') {  
    printf("是小写字母");  
}  

优势:直接利用 ASCII 码的顺序性。


四、调试与实践技巧

4.1 使用 putchargetchar

char ch = getchar();  
putchar(ch + 1);  // 输出下一个字符  

案例:输入 'X',输出 'Y'

4.2 字符数组与字符串函数

char str[] = "Hello";  
for (int i = 0; str[i] != '\0'; i++) {  
    str[i] += 1;  // 每个字符后移一位(如 'H' -> 'I')  
}  

结果:字符串变为 "Ifmmp"


五、总结:选择的艺术

  • 字符运算:适用于直接操作 ASCII 码的场景(如加密、验证)。
  • 字符串函数:需处理复杂文本时使用(如 strcpystrcat)。

🎯 记忆口诀
字符运算看ASCII,整型操作随心转;大小写换加32,字符串拼接用库函!

  • 标题: 第六章——字符型数据 第二节——字符型常量的运算
  • 作者: 亓翎_Re-Tikara
  • 创建于 : 2026-02-07 02:21:28
  • 更新于 : 2026-02-10 02:48:46
  • 链接: https://re-tikara.fun/Blog/posts/3a5224ff/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。