首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

变换到有符号的整数类型

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

转换到有符号的整数类型?
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是什么常量?
  解释下这个实例?


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

热点排行