-
数据类型和相应的大小
-
数据类型转换
当发生有符号数和无符号数之间的强制类型转换时,如果他们的长度是相同(比如int和unsigned一般都是4个字节,short和unsigned short都是两个字节),那么在位一级的表示上并没有变化,即如果都转化为二进制的形式来看,都是一样的。虽然从二进制01组成的角度来看是一样的,但我们要知道有符号数和无符号数的区别是最高位的权值发生了变化,有符号整数用补码表示,最高位的权值是-2(w-1),w为位宽,如int类型w大小为32,而无符号整数的最高为的权值为2(w-1)。而如果两个数长度不同,则先进行前面提到的2中长度的转换,再进行类型转换。 -
无符号整数和有符号整数之间进行强制类型转换时,位模式不改变。
-
有符号数转换为无符号数时,负数转换为大的正数,相当于在原值上加上2的n次方,而正数保持不变。
-
无符号数转换为有符号数时,对于小的数将保持原值,对于大的数将转换为负数,相当于原值减去2的n次方。
-
当表达式中存在有符号数和无符号数类型时,所有的操作都自动转换为无符号类型。可见无符号数的运算优先级高于有符号数。
无符号int与有符号int比较大小,转化为无符号int来比较
int类型与非无符号int的类型比较时,非无符号int的类型转化为int来比较
无符号int类型与其他类型如unsigned short,signed short,unsigned char, char 比较时,其他类型一律转化为无符号int类型来比较
非无符号int类型和非int类型如unsigned short,signed short,unsigned char, char 比较时,一律转化为int类型来比较
更多转换相关
链接看这里:https://www.cnblogs.com/tgycoder/p/4218696.html