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

C99中隐式转换?解决方案

2012-09-16 
C99中隐式转换?《C语言程序设计 现代方法》7.4.3 C99中的隐式转换两个操作数的类型都不是浮点类型的情况:1.(

C99中隐式转换?
《C语言程序设计 现代方法》
 
 7.4.3 C99中的隐式转换

 两个操作数的类型都不是浮点类型的情况:
 1.(略)
 2.如果无符号操作数的等级高于或等于有符号操作数的等级,将有符号操作数转换为无符号操作数的类型。
 
 3.如果有符号操作数类型可以表示无符号操作数类型的所有值,将无符号操作数转换为有符号操作数的类型。

 4.否则,将两个操作数都转为与有符号操作数的类型相对应的无符号类型。

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

问题:

“ 3.如果有符号操作数类型可以表示无符号操作数类型的所有值,将无符号操作数转换为有符号操作数的类型。”

这句话的意思是:
有符号级别>无符号级别,且无符号整数在有符号整数的范围之内!

 

C/C++ code
 //实例:  unsigned int x=2147483647;  long  y=3;  x+y;         /*有级别 > 无级别,long y > unsigned int x                       32位计算机:                       有符号整数范围:-2147483647~2147483647                       无符号整数:2147483647                       无符号整数:2147483647,在有符号整数的范围:-2147483647~2147483647之内!                      无-->有,x-->y (x转y) ,对否?                  */ 



[解决办法]
x += y
x = 2147483650

热点排行