C语言的学习中,学习到有符号数和无符号数,通过代码确定一个变量是属于有符号数还是无符号数
1、有符号数
有符号数是对于二进制而言的,最最高的为表示符号位,“0”表示正值,“1”表示负值,剩下的位表示数值。也就是说,有符号数的本质特征是,可以出现负值的情况
2、无符号数
无符号数是相对于有符号数的,数的二进制全部表示数值,没有正负之分。所以,无符号数的本质特征是,绝对不会出现负数的情况。
3、代码判定
a、判定一个数值是否一个无符号
#define ISUNSIGNED(a) (a>=0 && –a>=0)
因为无符号数绝对不会出现负值的情况。
b、判定一个类型是否为一个无符号数
#define ISUNSIGNEDTYPE(type) ((type)0 – 1 > 0)
无符号数会出现一个循环,就是绝对不会出现负数的情况。