转换到有符号的整数类型?
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是什么常量?
解释下这个实例?
[解决办法]
对电脑而言只有二进制字节数组,对人脑才有无符号整数、有符号整数、正数、负数、小数、……