我正在尝试编写一个程序,该程序将具有类似列表的列表
{{},{},{}}
其中每个列表将是y值,而其中的内部是x值。
当我尝试编译程序时,标题出现错误。
程序的相关部分:
void genRand(){
int x;
int y;
cin >> x;
cin >> y;
int world[y];
for(int yv = 0; yv == y; yv++){
char ylist[x];
for(int xv = 0; xv == x; xv++){
char symbols[2] = {'-', '#'};
int randIndex = rand() % 2;
ylist[xv] = symbols[randIndex];
}
world[yv] = ylist;
}
error: assigning to 'int' from
incompatible type 'int [x]'
world[yv] = ylist;
^
我该如何解决?它在上方的行中工作正常,但再次尝试时突然中断。
答案 0 :(得分:1)
您正在尝试将string
值放入int
数组中。
int world[y]
应该是string
数组,因此将其更改为string world[y]
答案 1 :(得分:1)
ylist
->字符数组类型
char ylist[x];
world[yv]
->整数
int world[y];
导致错误的问题是我们将字符数组类型设置为整数类型。
我们可以通过实际更改数据类型来解决此问题,以使我们设置的内容和处理程序相同。
答案 2 :(得分:1)
报告了转化问题:
错误:从分配给'int'
不兼容的类型'int [x]'
world [yv] = ylist;
因此请记住,数组只是存储在连续内存块中的多个数据值。 “ char”和“ int”在内存中的格式完全不同,因此,如果您尝试将它们读取为不同的数据类型,则会得到意想不到的结果。物理上,“字符”在内存中只有1个字节,而“整数”为4,因此,如果您要将ASCII数字存储为整数,则需要先将其转换为整数。
我相信这可以解决您遇到的问题:
int num = static_cast<int>(letter); // if letter='A', num=10
[注意]-ASCII数字值从0到9开始,然后是字母字符。考虑使用异常处理来捕获不良数据将是一个好主意。