在char数组中存储整数和添加

Storing integers in char array and adding

本文关键字:整数 添加 存储 char 数组      更新时间:2023-10-16

我已经知道可以在char数据类型中存储0-255的数字。因此,我尝试了以下代码:

#include <stdio.h>
int main()
{
    unsigned char num[4];
    int sum=0;
    int i=0;
    printf("Enter Four Digit Numbern");
    while(i<4)
    {
        scanf("%1d",&num[i]);
        i++;
    }
    sum=(int)num[0]+(int)num[1]+(int)num[2]+(int)num[3];
    printf("Sum of digits: %d",sum);
    return 0;
}

似乎运行正确,但一旦我将以下代码放入while循环中,每次循环重复和代码中断时,i的值都会变为零:

sum=sum+(int)(num[i]); i++;

我使用代码::块与MinGW编译器

使用字符类型存储数字时要非常非常小心。signed char的范围取决于您的编译器和操作系统。大多数情况下,最小值为-128,最大值为127。在其他方面可能有所不同。当您期望范围从0-255时,这可能会出现问题。如果您想使用char来存储数字,请使用unsigned char,因为它的范围是0-255。

因为字符(有符号或无符号)的数字表示形式不受约束,所以我通常通过编写一个函数来解决这个问题,该函数使用数组来赋值和查找数值。(但是,我几乎从不这样做,使用整数更容易…)

如果您想将整数值添加到特定索引

char a[10];
int i=9;
a[2]=boost::lexical_cast<char>(i)

发现这是将char转换为int的最佳方式,反之亦然。

这对我来说很好。

while(i < 4){
  scanf("%1d", &num[i]);
  sum += (int)(num[i++]);
}