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)
本文探讨了C++中的函数重载方法、类型识别技巧及表达式自动转换特性,具体包括如何通过函数重载区分不同类型的参数,利用表达式判断变量是否为有符号类型,以及无符号数取负后的特性。

7230

被折叠的 条评论
为什么被折叠?



