C语言 二维数组赋值问题

这样编程为什么错误?
int move[5][3];
if(dest.X > start.X && dest.Y > start.Y)
{
move[5][3] = {
{0,0,0},
{0,0,1}, //向东
{0,1,0}, //向南
{0,0,-1}, //向西
{0,-1,0}}; //向北
}
else if(dest.X < start.X && dest.Y > start.Y)
{
move[5][3] = {
{0,0,0},
{0,0,-1}, //向西
{0,1,0}, //向南
{0,0,1}, //向东
{0,-1,0}}; //向北
}
else if(dest.X < start.X && dest.Y < start.Y)
{
move[5][3] = {
{0,0,0},
{0,0,-1}, //向西
{0,-1,0}, //向北
{0,0,1}, //向东
{0,1,0}}; //向南
}
else(dest.X > start.X && dest.Y < start.Y)
{
move[5][3] = {
{0,0,0},
{0,0,1}, //向东
{0,-1,0}, //向北
{0,0,-1}, //向西
{0,1,0}}; //向南
}

为什么错误?

move[5][3] = {
{0,0,0},
{0,0,1}, //向东
{0,1,0}, //向南
{0,0,-1}, //向西
{0,-1,0}}; //向北
{}这个只能用来初始化,不能用来赋值。要用循环的方式赋值
你的那个只能在数组定义的时候才行。如:int move[5][3] = {
{0,0,0},
{0,0,1}, //向东
{0,1,0}, //向南
{0,0,-1}, //向西
{0,-1,0}}; //向北
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-14
这个很简单,对于数组必须在定义的时候就给初始化,不然会错误,假如一定要向楼主这般写,可以使用条件编译呢,或者简单点的就是定义几个不同的二维数组,如:

//int move[5][3];
//不要在此定义
if(dest.X > start.X && dest.Y > start.Y)
{
int move_1[5][3] = {
{0,0,0},
{0,0,1}, //向东
{0,1,0}, //向南
{0,0,-1}, //向西
{0,-1,0}}; //向北
}
else if(dest.X < start.X && dest.Y > start.Y)
{
int move_2[5][3] = {
{0,0,0},
{0,0,-1}, //向西
{0,1,0}, //向南
{0,0,1}, //向东
{0,-1,0}}; //向北
}
else if(dest.X < start.X && dest.Y < start.Y)
{
int move_3[5][3] = {
{0,0,0},
{0,0,-1}, //向西
{0,-1,0}, //向北
{0,0,1}, //向东
{0,1,0}}; //向南
}
else(dest.X > start.X && dest.Y < start.Y)
{
int move_4[5][3] = {
{0,0,0},
{0,0,1}, //向东
{0,-1,0}, //向北
{0,0,-1}, //向西
{0,1,0}}; //向南
}
第2个回答  2011-11-14
楼上说的对.....
我觉得我们应该讨论一下...为什么初始化和赋值的方式不一样.....
相似回答