You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C或C++中如何将char类型数字字符转换为对应int整数

C/C++ 单数字字符转整数实现方案

首先给出最简洁的通用实现,C和C++环境都可以直接用:

char ch = '3';
int x;
// 核心转换逻辑
x = ch - '0';

实现原理

C/C++语言标准明确规定:所有数字字符'0'到'9'的编码值一定是连续排列的。因此用目标数字字符减去字符'0'的编码值,得到的差值刚好就是该字符对应的整数数值。
比如ASCII编码场景下'0'的编码值为48,'3'的编码值为51,计算51 - 48刚好得到3,完全符合需求。

带合法性校验的实现

如果需要兼容非数字字符的异常场景,避免非法输入得到错误结果,可以配合标准库接口做前置校验:

C 语言实现

需要引入<ctype.h>头文件:

#include <ctype.h>

char ch = '3';
int x;
if (isdigit((unsigned char)ch)) {
    x = ch - '0';
} else {
    // 可自定义非数字字符的异常处理逻辑
}

C++ 实现

需要引入<cctype>头文件:

#include <cctype>

char ch = '3';
int x;
if (std::isdigit(static_cast<unsigned char>(ch))) {
    x = ch - '0';
} else {
    // 可自定义非数字字符的异常处理逻辑
}

注意事项

  • 不要使用ch - 48这类硬编码ASCII数值的写法,标准仅规定数字字符编码连续,没有规定'0'的编码值一定为48,硬编码会破坏代码可移植性
  • 调用isdigit类接口时,需要先将char类型转为unsigned char再传参,避免char为有符号类型时传入负值触发未定义行为

内容的提问来源于stack exchange,提问作者SAHIL NAZIR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:27:03