【发布时间】:2019-07-08 18:36:43
【问题描述】:
我正在尝试将二维数组的 char 转换为二维数组的 int,以便我可以获得每个字符的 ASCII 值,但是每当我打印输出时,我都会以十六进制输出。但是当我尝试将该十六进制转换为ASCII 值不等于任何 ASCII 值
#include <iostream>
using namespace std;
int main() {
int n;
cout<<"Enter input"<<endl;
cin>>n;
char a [n][50];
int arr [n][50];
for(int i=0;i<n;i++)
{
cin>>a[i];
arr[i][50]=a[i][50];
}
int count=0;
for(int i=0;i<n;i++)
{
cout<<arr[i];
cout<<endl;
}
return 0;
}
我接受输出 65,但我得到的输出是 0x7ffee224f940。 我给出的输入是 A
【问题讨论】:
-
char a [n][50];in standardc++n必须是编译时间常数。 stackoverflow.com/questions/1887097/… -
arr[i][50]=a[i][50];是未定义的行为。您正在访问 1 超过二维数组的末尾。有效索引是 arr[0][0] 到 arr[n-1][49] -
cin>>a[i];应该怎么做?[50]的目的是什么? -
在两个数组声明期间未在
n的位置使用编译时已知的数字会调用未定义的行为,如果您不知道,这真的很糟糕,可能是您的来源的一部分崩溃(虽然这可能取决于你的编译器这次你是否可以摆脱它。不过,既然你崩溃了,我假设你没有。)。 -
arr[i]计算为指向arr[i][0]数据的指针,然后将其打印为指针。
标签: c++