int main() {
unsigned int a = 1;
int b = -20;
std::cout << ((a + b > 6) ? ">6" : "<6");
return 0;
}
输出 >6
因为:int 转为unsigned int
int main() {
unsigned int a = 1;
int b = -1;
std::cout << ((a + b > 1) ? ">1" : "<1");
return 0;
}
输出 <1
因为: - 1 32位全为1,再加上1。结果为0
int main() {
unsigned int a = 1;
char b = -20;
unsigned int c = (unsigned int)b;//c=4294967276
unsigned char d = (unsigned char)b;//d=236
std::cout << (((c = a + b) > 1) ? ">1" : "<1");//c=4294967277
return 0;
}
输出 >1
因为:由注释得:将char型 - 20 转成了 unsigned int 进行运算