C代码枚举命名冲突原因?

#include <stdio.h>

enum coordinate_type { RECTANGULAR = 1, POLAR };

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

Error:

warning: ‘RECTANGULAR’ is used uninitialized in this function [-Wuninitialized]
         printf("%d %d\n", RECTANGULAR, POLAR);

编译出来的文件执行结果是:0 2,原因是什么?`
OS: LinuxMint 17
GCC: version 4.8.4

阅读 3.4k
1 个回答

C语言枚举的实质是整数,SO

int RECTANGULAR = 1;
int POLAR = RECTANGULAR+1;

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

现在,想想你打印的是哪个变量?

其实就是局部变量和全局变量的关系了,同名时肯定是用的局部变量

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进