1、使用 -'0' 方式
最常见、最简单的方法,基于 ASCII 码表中字符数字的顺序。字符 '0'
对应 ASCII 值 48
,'1'
对应 49
,以此类推。因此,通过将字符与 '0'
做减法,可以获得其对应的整数。
int main() { char c = '7'; int num = c - '0'; // '7' - '0' = 7 printf("The integer is: %d\n", num); // 输出:The integer is: 7 return 0; }
2、使用 atoi() 函数(适用于多个字符)
如果有一个包含多个数字字符的字符串,可以使用 atoi()
来将整个字符串转换为整数。
#include <stdio.h> #include <stdlib.h> int main() { char c = '7'; int num = atoi(&c); // 注意:&c 是字符的地址 printf("The integer is: %d\n", num); // 输出:The integer is: 7 return 0; }
注意:atoi()
适用于处理字符串,而不是单个字符。如果是单个字符,直接用 '0'
减法更简洁。
3、使用 scanf() 输入转换
如果通过 scanf()
输入字符并希望转换为整数,可以通过 scanf
直接读取并转换。
#include <stdio.h> int main() { char c; scanf("%c", &c); // 输入字符 int num = c - '0'; // 将字符转换为整数 printf("The integer is: %d\n", num); // 输出:The integer is: 7 return 0; }
4、其他更复杂的转换
如果需要处理其他字符(如 'a'
到 'f'
,对应十六进制),可以通过条件判断或直接映射来进行转换。
#include <stdio.h> int main() { char c = 'a'; // 'a' 对应十六进制 10 int num; if (c >= '0' && c <= '9') { num = c - '0'; } else if (c >= 'a' && c <= 'f') { num = c - 'a' + 10; // 'a' -> 10, 'b' -> 11, ... } printf("The integer is: %d\n", num); // 输出:The integer is: 10 return 0; }