我是编码的新手,我正在尝试创建一个复古风格的游戏。 这个想法是让游戏中的每个方块成为字符串的一部分。这是我到目前为止的代码:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
int a,b=0;
char s[9][77]={};
while (true) {
s[a][b]={'_'};
b+=1;
if (b>77){
a+=1;
b=0;
}
if (a>9){
a=0;
b=0;
break;
}
}
s[0][0]={'H'};
cout << "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@";
cout << "@" <<s[0][0]<<s[0][1];
return 0;
}
当我在大约4秒后运行它时它给了我:
program.exe已停止工作。
如果有错误的话我会得到以下信息:
msg已关闭(在cmd中):进程返回-1073741819(0xc0000005)
编译时我得到以下内容;
警告:扩展初始化程序列表仅适用于-std = c ++ 11或-std = gnu ++ 11 [默认启用]
ps:编码片段仅用于测试我没有收到错误。
答案 0 :(得分:2)
一些问题:
int a, b=0; // a is not initialized
while while循环将访问
while (true) {
s[a][b] = {'_'}; // b will be 78, access s[a][78] out of bounds
b+=1;
if (b>77){
//...
答案 1 :(得分:1)
问题可能在这里:
int a,b=0;
在这里,您声明了两个变量,但只初始化一个。这意味着a
的值未定义,并在例如s[a][b]
是未定义的行为。
答案 2 :(得分:1)
if (b>77){
77已经是非法指数;测试需要使用>=
。与a
下面的那个相同。
还有Joachim发现的问题。