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

C语言如何将数字列表转换为对应的整数

C语言数字列表转对应整数实现方案

核心实现逻辑

初始设置结果变量为0,逐个遍历数字列表中的每一位数字,每次迭代执行结果 = 结果 * 10 + 当前位数字的计算即可:每乘10相当于把已有的数值左移一位,空出个位位置存放新的数字。

注意事项

  • 列表中每个元素必须是0~9的单个有效数字,否则计算结果不符合预期
  • 需考虑整数溢出问题,转换前可以提前判断避免结果越界,溢出判断逻辑说明:res > (LLONG_MAX - nums[i]) / 10 等价于预判 res * 10 + nums[i] > LLONG_MAX,提前在计算前做判断可以避免实际执行溢出运算导致的未定义行为。

完整示例代码

#include <stdio.h>
#include <limits.h>

// 参数说明:nums是数字列表数组,len是数组长度
long long nums_to_int(const int *nums, int len) {
    // 校验输入合法性
    if (nums == NULL || len <= 0) {
        return -1; // 错误标识,可根据自身需求调整错误返回值
    }
    long long res = 0;
    for (int i = 0; i < len; i++) {
        // 校验单个数是否为合法数字
        if (nums[i] < 0 || nums[i] > 9) {
            return -1;
        }
        // 溢出校验,防止结果超过long long最大值
        if (res > (LLONG_MAX - nums[i]) / 10) {
            return -1; // 溢出错误
        }
        res = res * 10 + nums[i];
    }
    return res;
}

int main() {
    int test_nums[] = {1,6,3,2,5};
    int len = sizeof(test_nums) / sizeof(test_nums[0]);
    long long result = nums_to_int(test_nums, len);
    if (result == -1) {
        printf("转换错误\n");
    } else {
        printf("转换结果:%lld\n", result); // 输出为16325
    }
    return 0;
}

如果你的数值范围比较小,不需要考虑超过int最大值的情况,也可以把返回值改成int,溢出判断逻辑对应的换成INT_MAX即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:24:06