操作系统:linux
enum枚举类型
#include <stdio.h>
enum test{
//不赋值时,默认第一个值为0,后续依次+1
A,
B,
C,
D,
};
int main(){
enum test aa;
//C++中不允许直接给aa赋enum test以外的值,但是在C语言中是可以的
aa=-2;
if(aa>0){
printf("aa>0\n");
}else if(aa<0){
printf("aa<0\n");
}else{
printf("aa=0\n");
}
}
此时输出的居然是
$ gcc -o test test.c && ./test
aa>0
如果将枚举改成
enum test{
Y=-1,
//ABCD的值未变化
A,
B,
C,
D,
};
运行结果发生了变化
gcc -o test test.c && ./test
aa<0
所以结论是:
枚举值中没有负值时,编译器会将其解释为unsigned int类型,否则为int类型