c语言中的布尔类型、枚举类型是个啥概念?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中的布尔类型、枚举类型是个啥概念?相关的知识,希望对你有一定的参考价值。
布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即"真"与"假"。 布尔常量 在Pascal语言中"真"用ture表示,"假"用False表示。所以布尔类型只有TRUE与FALSE两个常量。C语言或C++的一种构造类型,它用于声明一组命名的常数。 (1)枚举的声明:枚举声明用于声明新的枚举类型。 访问修辞符 enum 枚举名:基础类型 枚举成员 ; 基础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。 (2)枚举成员 枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。 示例: public enum TimeofDay:uint Morning=-3, Afternoon=-2, Evening=-1 ; 产生编译时错误,原因是常数值 -1、-2 和 –3 不在基础整型 uint 的范围内。 参考技术A c++有bool类型,标准C没有布尔类型,用整型代替布尔类型,非0表示真,0表示假,BOOL就是int 。 枚举是用标识符表示的整型常数集合,这些常数是该类型变量可取的合法值,这些标识符称为枚举常量。定义:enum<枚举名><标识符1>,<标识符2>...<标识符n>;
比如enum weekdaysun,mon,tue;
就表示定义了3个枚举型常量,默认他们的值是从0开始,依次递增,也就是sum=0,mon=1,tue=2
你也可以直接给他们赋值,比如enum weekdaysun=1,mon,tue;
如果这样的话mon的值就为2,tue的值就为3.
你也可以用其他变量代替枚举常量的值,比如
enum weekdaysun,mon,tuea,b,c;
a=sun;
b=mon;
c=tue;
如果输出的话a=0,b=1,c=2 参考技术B 在枚举类型的定义中列举出所有可能的取值, 被说明为该枚举类型的变量取值不能超过定义的范围, 枚举类型是一种基本数据类型,而不是一种构造类型enum 枚举名
枚举值表 ;
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。标准C语言是没有布尔的,C++就有,非0表示真,0表示假 参考技术C 你可以这样理解,布尔类型就是只有true和false两个值,一般是用来做标记位的~枚举类型就是可以是你设定的可能出现的所有类型,比如,一星期有七天,你可以设一个枚举型变量,它的值可以为:星期一,星期二……星期日中的一个,超出这个范围就是不允许的了 参考技术D 布尔型的值只能是true和false,一般用于标记。枚举型就是一组常量,就像选择题一样,选取其中的。
C语言中的枚举类型
如果一个变量只有几种可能的值,则可以定义为 枚举类型 。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
声明枚举类型用 enum 开头。例如:
声明了一个枚举类型enum weekday,则可以用此类型来定义变量。例如:
也可以直接定义枚举变量,例如:
其中sun、mon、…、sat称为 枚举元素 或 枚举常量 。
说明:
1、在C编译中,对枚举元素按常量处理,故称为 枚举常量 。它们不是变量,不能进行赋值。例如 sun = 7; mon = 1; 是错误的。
2、枚举元素作为常量,是有值的。C语言编译按定义时的顺序使它们的值为0、1、2……也可以在定义时,指定枚举元素的值,例如:
3、枚举值可以用来作判断比较。例如:
4、一个证书不能直接赋值给一个枚举变量。例如 workday=1; 是错误的。它们属于不同的类型。应该先进性强制类型转换,然后才能赋值。例如:
相当于将序号为2的枚举元素赋值给workday,相当于
参考技术A用法1
enum colour RED, GREEN, BLUE colour_t;
colour_t的值可以等于,RED, GREEN, BLUE中的任一个。
用法2
typedef enum colour RED, GREEN, BLUE colour_t;
colour_t col;
col的值可以等于,RED, GREEN, BLUE中的任一个。
注:如果RED, GREEN, BLUE没有赋值,默认RED=0,GREEN=1,BLUE=2;
以上是关于c语言中的布尔类型、枚举类型是个啥概念?的主要内容,如果未能解决你的问题,请参考以下文章