C++不同基本类型相运算的运算规则获取,利用了typeidRTTI功能_拔剑-浆糊的传说_新浪博客...

# include  < iostream >
using namespace std;

// # define DEFINE_VARIABLE(type)              type type##1                // 定义某个non-unsigned 类型的变量, 如int int1, char char1
// # define DEFINE_VARIABLE_U(type)     unsigned type u##type##1    // 定义某个类型的变量, 如unsigned int uint1, unsigned char uchar1,, 注意使用本宏要把unsigned 去掉
// # define NAME(v)          type##1                                       // 通过类型名获取该类型通过DEFINE_VARIABLE()定义的变量名字            
// # define NAME_U(v)        u##type##1                                     // 通过unsigned类型名获取该类型通过DEFINE_VARIABLE()定义的变量名字 , 注意使用本宏要把unsigned 去掉           

int main()
{
char c1;
unsigned char uc1;
short s1;
unsigned short us1;
int i1;
unsigned int ui1;
long l1;
unsigned long ul1;
long long ll1;
unsigned long long ull1;
long double ld1;

# define TYPE_NAME(data)  typeid(data).name()<<","
# define TYPE_ID(data1,data2)      typeid(data1+data2).name()<<","
# define TYPE_IDS(data2)\
cout<<TYPE_NAME(data2)<<TYPE_ID(c1, data2)<<TYPE_ID(uc1, data2)<<TYPE_ID(s1, data2)<<TYPE_ID(us1, data2)<<TYPE_ID(i1, data2)<<TYPE_ID(ui1, data2)<<TYPE_ID(l1, data2)<<TYPE_ID(ul1, data2)<<TYPE_ID(ll1, data2)<<TYPE_ID(ull1, data2)<<TYPE_ID(ld1, data2)<<endl;\

cout << ","<<TYPE_NAME(c1) << TYPE_NAME(uc1) << TYPE_NAME(s1) << TYPE_NAME(us1) << TYPE_NAME(i1) << TYPE_NAME(ui1) << TYPE_NAME(l1) << TYPE_NAME(ul1) << TYPE_NAME(ll1) << TYPE_NAME(ull1) << TYPE_NAME(ld1) << endl;
TYPE_IDS(c1);
TYPE_IDS(uc1);
TYPE_IDS(s1);
TYPE_IDS(us1);
TYPE_IDS(i1);
TYPE_IDS(ui1);
TYPE_IDS(l1);
TYPE_IDS(ul1);
TYPE_IDS(ll1);
TYPE_IDS(ull1);
TYPE_IDS(ld1);
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值