c – 允许枚举的标识符是什么意思?
发布时间:2020-12-16 05:51:57 所属栏目:百科 来源:网络整理
导读:为什么当我尝试将不正确的值分配给类型枚举答案的变量a时,编译器不抱怨? #include stdio.hint main(){ enum answer {NO,YES}; enum gender {MALE,FEMALE}; enum answer a = 5; /* Assign an invalid value. */ printf("answer: %dn",a); a = MALE; /* Assi
为什么当我尝试将不正确的值分配给类型枚举答案的变量a时,编译器不抱怨?
#include <stdio.h> int main() { enum answer {NO,YES}; enum gender {MALE,FEMALE}; enum answer a = 5; /* Assign an invalid value. */ printf("answer: %dn",a); a = MALE; /* Assign a value of wrong type */ printf("answer: %dn",a); return 0; } 这是输出: $gcc -std=c99 -pedantic -Wall -Wextra enum.c $./a.out answer: 5 answer: 0 如果枚举不会导致类型检查,那么语法如何: enum [identifier] {enumerator-list} 我使用答案和性别作为我的枚举的标识符.允许这种语法是什么意思? 我的意思是这个代码可以写得很好 enum {NO,YES}; enum {MALE,FEMALE}; 允许这种语法是什么意思? enum answer {NO,YES}; enum gender {MALE,FEMALE}; 解决方法
因为在C中,枚举实际上等同于int.它是像这样的标准,只是太多的程序依赖于这种行为来改变. 在C中,它们是不同的类型,编译器抱怨: $g++ -Wall -Wextra a.c a.c: In function 'int main()': a.c:8:24: error: invalid conversion from 'int' to 'main()::answer' [-fpermissive] a.c:11:14: error: cannot convert 'main()::gender' to 'main()::answer' in assignment
我的快速猜测将是前向兼容性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |