1.用函数重载的方法
char* GetType(unsigned int i)
{
return "unsigned int";
}
char* GetType(int i)
{
return "int";
}
2.利用表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。
(1)当a为无符号数时a-a为0,而-1为有符号数,因此转为无符号数,为一个很大的数
(2)当a为有符号数时,a-a为0,有符号数和有符号数相减为有符号数,因此得到-1 所有用这个宏可以判断出是
否为有符号数
#define IsUnsigned(a) (((a)-(a)-1)>0)
3.同2 一个无符号数取-之后为一个很大的数
#define IsUnsigned(a) ((a) >= 0 && (-a) >= 0)