有符号与无符号 整形变量 相加和比较

来源:互联网 发布:家用脱毛仪 知乎 编辑:程序博客网 时间:2024/04/27 11:02
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=4294967276unsigned char d = (unsigned char)b;//d=236std::cout << (((c = a + b) > 1) ? ">1" : "<1");//c=4294967277return 0;}
输出  >1
因为:由注释得:将char型 - 20  转成了 unsigned int 进行运算