读书人

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

发布时间: 2013-10-29 12:07:57 作者: rapoo

?:判断问题。。。//为什么返回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数减比它大的数都是负数,只是放在 ? :运算中会进行这样转换

读书人网 >C++

热点推荐