为什么char a=120 char b=12 char c=a+b c却不是132
时间: 2024-09-11 11:06:52 浏览: 38
C 代码 在从 A 到 B 的整数中搜索值 J,使得 F(J) = C.rar
在C语言中,字符变量实际上存储的是ASCII码值。当你将整数120赋给`char a`,它实际上是存储了小写字母'y'的ASCII码值(120)。同样,当你将12赋给`char b`,它存储的是数字字符'2'的ASCII码值(49 + 58 = 107, 因为'1'的ASCII码是49,'0'的ASCII码是48,所以12转换成十进制就是107,但是由于字符常量会自动转为对应的ASCII值,所以我们直接认为它是12)。
当你做`c = a + b`的时候,这里`+`操作符对于字符类型的加法并不是通常意义上的数学加法,而是字符拼接操作。字符'a'和'2'拼接在一起生成的是字符'ay'(120 + 12),而不是它们各自的ASCII值之和。因此,`char c`的结果是一个不可打印的控制字符,而不是132。
要得到132,你需要明确地进行整数相加,并确保结果存储在一个能够表示整数的类型,如`int`或者使用`unsigned char`:
```c
char a = 'y';
char b = '2';
int intA = a - 'a'; // 将字符转换为ASCII值减去'a'的ASCII值以避免拼接
int intB = b - '0'; // 同理,将字符转换为ASCII值减去'0'
int c = intA + intB;
```
阅读全文