C99中隐式转换?
《C语言程序设计 现代方法》
7.4.3 C99中的隐式转换
两个操作数的类型都不是浮点类型的情况:
1.(略)
2.如果无符号操作数的等级高于或等于有符号操作数的等级,将有符号操作数转换为无符号操作数的类型。
3.如果有符号操作数类型可以表示无符号操作数类型的所有值,将无符号操作数转换为有符号操作数的类型。
4.否则,将两个操作数都转为与有符号操作数的类型相对应的无符号类型。
---------------------------------------------------------------
问题:
“ 3.如果有符号操作数类型可以表示无符号操作数类型的所有值,将无符号操作数转换为有符号操作数的类型。”
这句话的意思是:
有符号级别>无符号级别,且无符号整数在有符号整数的范围之内!
//实例: 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) ,对否? */