在c ++中使用数组的奇怪输出

时间:2015-08-23 09:06:00

标签: c++ arrays

我正在使用数组开发其中一个程序。 我想要的是...添加char数组的元素并给出输出。 这是代码:

#include<iostream>
#include<string.h>

using namespace std;
int main()
{
char number[8];
int in , i = 0 , square = 0;
cin>>number;
while(1){
    if(i != strlen(number)){
    square = (number[i]) + square;
    cout<<square<<"\n";

    }
    else{
        break;
    }
    i++;
}
cout<<square - 48*(strlen(number));
return 0;
}
奇怪的是,输出是48 x(输入的位数)比原始输入多,这就是我从输出中减去该部分的原因。 为什么会这样?

1 个答案:

答案 0 :(得分:0)

number[i]是一个字符,但您将其视为整数。 '0'(一个字符)不等于0(整数),'1'不等于1等。将十进制数字转换为整数的简单方法是从中减去'0'。喜欢这个

square = (number[i] - '0') + square;

'0' - '0'相等0'1' - '0'等于1等。