|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 一叶枫残 于 2021-2-9 19:53 编辑
联合
联合类型的定义方式与创建和结构体类型一样,只不过把 struct 改为 union
对于联合类型,可以创建不同的类型的变量,但它们的地址相同,意味着他们之中有一个的值发生改变,其余变量储存的值也会发生改变;
- #include <iostream>
- using namespace std;
- union IFT
- {
- int it;
- char c;
- float flt;
- };
- int main()
- {
- IFT ift_1;
-
- cout << "ift_1.it的地址:" << &( ift_1.it ) << endl;
- cout << "ift_1.c的地址:" << (void*)&( ift_1.c ) << endl;
- cout << "ift_1.flt的地址:" << &( ift_1.flt ) << endl << endl;
-
- ift_1.it = 54;
- cout << "ift_1.it:" << ift_1.it << endl;
- cout << "ift_1.c:" << ift_1.c << endl;
- cout << "ift_1.flt:" << ift_1.flt << endl << endl;
-
- ift_1.c = '3';
- cout << "ift_1.c:" << ift_1.c << endl;
- cout << "ift_1.it:" << ift_1.it << endl;
- cout << "ift_1.flt:" << ift_1.flt << endl;
-
- return 0;
- }
复制代码- ift_1.it的地址:0x70fe00
- ift_1.c的地址:0x70fe00
- ift_1.flt的地址:0x70fe00
- ift_1.it:54
- ift_1.c:6
- ift_1.flt:7.56701e-044
- ift_1.c:3
- ift_1.it:51
- ift_1.flt:7.14662e-044
复制代码
在赋值给变量c之后,it的值发生了改变,变为3的ascii码,这就是地址相同造成的结果,同时flt的值也发生了影响(即使没有被赋值过);
枚举类型
定义枚举类型使用enum,后面空格跟类型名以及中括号里面的值,创建枚举类型与创建联合类型和结构体一样,使用类型名加变量名,这个变量名只能取中括号里面的值(取其他值会报错);
- #include <iostream>
- using namespace std;
- int main()
- {
- enum mood{ happy , sad , angry};
-
- mood me;
- me = sad;
- cout << "me:" << me << endl;
-
- me = angry;
- cout << "me:" << me << endl;
-
- return 0;
- }
复制代码
枚举类型的输出结果为在中括号内的排名顺序,从0开始,赋值时如sad不用加双引号;
同时,中括号里的类型可以直接输出,我们在上面程序加上
- cout << "happy:" << happy << endl;
复制代码
输出结果为
枚举类型可以配合swich语句使用;
|
|