在C++中检查此类型转换

Check this typecasting in C++

本文关键字:类型转换 检查 C++      更新时间:2023-10-16

帮助我纠正这个问题。 我只想要答案为 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];
    }
}
注释

如下

注释
// 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;
}

疯狂的输出?

您正在做 :

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

a[i]i = 0 1时,1的 ASCII (49)- 0 的 ASCII (48) = 1因此,ASCII 对应的字符进入 b[j](对于其他 i 和 j 值也是如此),因此你会得到一些令人困惑的字符,而不是 123 ,对于 123,你只需要输入b[j] = a[i] .

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