大佬教程收集整理的这篇文章主要介绍了在C中溢出枚举类型?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
enum week {sunday = 0,星期一,星期二,星期三,星期四,星期五,星期六};
我有:
enum week day; day = saturday; day++;
什么是一天的价值?
在这种情况下,saturday的数值将为6.增加它将给出数值7.实际上,这不太可能溢出底层整数类型(int,char,unsigned char或编译器选择的任何东西),所以使用%d格式打印值将打印7.
但是,枚举周类型的枚举(命名)值没有值,值为7.
如果递增枚举值会溢出底层整数类型(这不是这里的情况),结果是未定义的.这是因为底层整数类型可以是有符号或无符号的,并且溢出有符号整数类型会给出未定义的行为.
从理论上讲,编译器可能使用枚举周的基础类型,只能表示值0到6 – 在这种情况下,递增星期六会给出未定义的行为.在实践中,AFAIK还没有任何C编译器不选择基础类型作为标准整数类型之一(char,int,unsigned char,unsigned等).所有这些类型都可以表示7的数值.
以上是大佬教程为你收集整理的在C中溢出枚举类型?全部内容,希望文章能够帮你解决在C中溢出枚举类型?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。