马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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语句使用;
|