读书人

变换到有符号的整数类型

发布时间: 2012-09-23 10:28:11 作者: rapoo

转换到有符号的整数类型?
C语言程序设计 现代方法》
算术转换的结果
转换到符号的整数类型

将有符号或无符号的整数类型转换成另一种有符号整数类型,这个时候也可能发生超出目标类型值范围的现象。比方说,当一个值从long 或 unsigned int 转换成int时,像这样转换到有符号整数类型所造成的上溢,最终结果由实现版本自行决定,这一点和转换到无符号整数类型不一样。

大多数编译器会丢掉原始值二进制表示时的最高位,并用新的类型解释这些低位。下面的范例演示在这样的转换策略下,unsigned int 的既有数字位会被解读为signed int 值。

C/C++ code
 #include <limits.h> int i=UINT_MIX;


然而,这样的转换可能也会导致信号(signal)产生(不同的编译器可能有不同的做法),以通知程序,发生了值范围上溢情况。

----------------------------------------------------

问题:

一,赋值表达式,左操作数是有符号。
类型转换后, 怎样知道有符号数溢出?

二,怎样防止类型转换后,发生溢出?

三,int i=UINT_MIX;
UINT_MIX是什么常量?
解释下这个实例?


[解决办法]
对电脑而言只有二进制字节数组,对人脑才有无符号整数、有符号整数、正数、负数、小数、……

读书人网 >C语言

热点推荐