【C语言】为什么这个枚举变量 `result` 没有赋值却可以在`switch`中执行和`direction`值匹配的`case`呢?

  • 问题:枚举变量 result 我并没有把 direction 的值赋值给它,但是每次测试的结果都是 switch 这里执行了和 direction 相匹配的 case 项,这是为什么呢?

  • 思路:我本应该是把 direction 的值赋值给 result ,然后用 result 去为 switch 作判断的,但是没有这么做却还是可以运行出正确的结果!

  • 说明: directionDerived_coord() 函数的形参,并且它是声明了static


代码


void Derived_coord(int direction, int *infer_x_coord, int *infer_y_coord)
{
    enum Direction result;
    
    switch (result)
    {
        case North:
                (infer_y_coord[0]) -= 1;
                (infer_y_coord[1]) -= 2;
                (infer_y_coord[2]) -= 3;
                (infer_y_coord[3]) -= 4;
                break;

        case South:
                (infer_y_coord[0]) += 1;
                (infer_y_coord[1]) += 2;
                (infer_y_coord[2]) += 3;
                (infer_y_coord[3]) += 4;
                break;
    
        case West:
                (infer_x_coord[0]) -= 1;
                (infer_x_coord[1]) -= 2;
                (infer_x_coord[2]) -= 3;
                (infer_x_coord[3]) -= 4;
                break;

        case East:
                (infer_x_coord[0]) += 1;
                (infer_x_coord[1]) += 2;
                (infer_x_coord[2]) += 3;
                (infer_x_coord[3]) += 4;
                break;

        default:
                (infer_x_coord[0]) += 1;
                (infer_x_coord[1]) += 2;
                (infer_x_coord[2]) += 3;
                (infer_x_coord[3]) += 4;
                break;
    }
}

枚举类型的声明


static int direction = 0;  

enum Direction
{
    North = 1,
    South = 2,
    West  = 3,
    East  = 4
};