在C++中检查此类型转换
Check this typecasting in C++
帮助我纠正这个问题。 我只想要答案为 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]
.
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 模板中的类型转换
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- C++:用户定义的显式类型转换函数错误
- 将类指针类型转换为键时出错
- 通过引用传递参数时C++类型转换
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- C++显式类型转换(C 样式强制转换)的强制表示法和static_cast的多种解释
- C++无效的函数类型转换
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 如何将Windows产品类型转换为名称?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 事件系统:使用类型转换或联合进行继承
- 编译时类型转换检查(constexpr和用户定义的文字)
- 在C++中检查此类型转换