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

?判断有关问题。//为什么返回1

2013-10-29 
?:判断问题。。。//为什么返回1 ?unsigned int val 20int test val - 40 0 ?1:0[解决办法]当比较判断

?:判断问题。。。//为什么返回1 ?
unsigned int val = 20;
int test = val - 40 > 0 ?1:0;
[解决办法]
当比较判断存在无符号和有符号类型的时候,有符号的会自动转换成无符号的!
[解决办法]

引用:
1. unsigned int 减去 int,先会把int提升为unsigned int,得到结果是 unsigned int

2. unsigned int 和 int 进行比较,会把int 提升为unsigned int

这里有2处类型提升。很明显,任何一个非零的无符号数都比0大


1. unsigned int 减去 int,先会把int提升为unsigned int,得到结果是 unsigned int
这个说法不准确,实际测试,unsigned和非unsigned数减比它大的数都是负数,只是放在 ? :运算中会进行这样转换

热点排行