【发布时间】:2011-03-26 12:09:04
【问题描述】:
我在这里写了一段代码,有点进退两难。我必须根据之前的朝向和移动来确定朝向。
我为 4 个面做了一个简单的枚举:
typedef enum directions {N,E,S,W}Facing;
然后是三个函数,每个函数都使用一个简单的 switch 语句,根据当前朝向采取行动。现在,函数 turnLeft 和 turnRight 工作得很好,但是在函数 move 中,switch 语句没有遇到任何情况,即使我确定输入了 N、E、S 或 W。
- (Facing) turnLeft: (Facing) f
{
switch (f)
{
case N:
f = W;
break;
case E:
f = N;
break;
case S:
f = E;
break;
case W:
f = S;
break;
default:
break;
}
return f;
}
- (Facing) turnRight: (Facing) f
{
switch (f)
{
case N:
f = E;
break;
case E:
f = S;
break;
case S:
f = W;
break;
case W:
f = N;
break;
default:
break;
}
return f;
}
- (void) move:(Facing) f
{
switch (f)
{
case N:
y+1;
break;
case W:
x+1;
break;
case S:
y-1;
break;
case E:
x-1;
break;
default:
break;
}
}
所以,据我所知,所有这些开关的工作方式都差不多,但第三个不工作,前两个工作得很好。有谁知道可能是什么问题?
【问题讨论】:
标签: objective-c enums switch-statement