union和enum的使用

//union和enum的使用
#include<iostream>
#include<cstring>
using namespace std;

class Token
{
public:
	enum TokenKind { INT1, CHAR1, DBL1 };
	TokenKind tok;
	union TokenValue
	{
		char cval;
		int ival;
		double dval;
	}val;
};

union number
{ /*定义一个联合*/
	int i;
	struct
	{ /*在联合中定义一个结构*/
		char first;
		char second;
	}half;
}num;
union
{
	int i;
	char x[2];
}a;


int main()
{
	Token first_token;
	first_token.tok = Token::INT1;
	switch (first_token.tok)
	{
	case Token::INT1:
		first_token.val.ival = 42;
		break;
	case Token::CHAR1:
		first_token.val.cval = '1';
		break;
	case Token::DBL1:
		first_token.val.dval = 3.14;
		break;
	default:
		break;
	}

	num.i = 0x4241; //联合成员赋值
	printf("%c%c\n", num.half.first, num.half.second);
	num.half.first = 'a'; /*联合中结构成员赋值*/
	num.half.second = 'b';
	printf("%x\n", num.i);//以十六进制的方式输出
	
	a.x[0] = 10;
	a.x[1] = 1;
	printf("%x %d", a.i,a.i);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值