为什么是这个简短的C程序的结果;3.2“是吗;?

为什么是这个简短的C程序的结果;3.2“是吗;?,c,enums,C,Enums,以下是源代码: #include <stdio.h> enum coordinate_type{ RECTANGULAR = 1,POLAR }; int main(void) { int RECTANGULAR; printf("%d %d\n",RECTANGULAR,POLAR); return 0; } 您正在重新定义主函数中的矩形。它用一个“随机”值初始化,在本例中为3,但也可以是

以下是源代码:

    #include <stdio.h>

    enum coordinate_type{ RECTANGULAR = 1,POLAR };

    int main(void)
    {
        int RECTANGULAR;
        printf("%d %d\n",RECTANGULAR,POLAR);
        return 0;
    }

您正在重新定义主函数中的矩形。它用一个“随机”值初始化,在本例中为3,但也可以是其他任何值

由于枚举的定义方式,POLAR keps的值为2


尝试重新定义main中的矩形变量以查看不同的输出。

因为您声明了一个未初始化的变量
矩形
,该变量在打印时恰好包含值
3
。它是未定义的行为,可以包含任何值。你的意思可能是
int-value=矩形printf()
打印
value
does?您应该使用所有警告和调试信息编译可能的副本,例如,
gcc-Wall-Wextra-g
。然后你会得到警告,你应该改进你的代码,直到你没有得到警告。
3 2