在C ++中检查这个类型转换

时间:2015-06-17 19:26:07

标签: c++ typecasting-operator

帮我纠正这个问题。我希望答案仅为123,但它显示了一些疯狂的输出。

#include<iostream>
#include<stack>
#include<string.h>
using namespace std;
int main()
{
    char a[] = "123 234 435 - ";
    int i = 0;
    int b[100];
    int j = 0;
    while (a[i] != ' ')
    {
        b[j] = a[i] - '0';
        j++;
        i++;
        //  cout<<b[j]<<endl;
    }
    for (int k = 0; k<j; k++)
    {
        cout << b[j];
    }
}

2 个答案:

答案 0 :(得分:1)

以下评论的注释

// initialization of b[0] is required
while (a[i] != ' ')
{
    b[j] = a[i] - '0'; // what about higher digits? a 10*b[i] is missing
    j++; // why? b[0] is not over yet
    i++;
    //  cout<<b[j]<<endl;
}

答案 1 :(得分:1)

疯狂输出?

你在做:

b[j] = a[i] - '0'

a[i]i = 0时{p> 1所以1的ascii(49) - 0的ascii(48)= 1 所以ascii对应的字符进入b[j](类似于其他i和j值)因此你得到一些令人困惑的字符而不是123,对于123你只需要放b[j] = a[i]

另请注意,在打印循环中,您应该cout << b[k]