整数转换规则中的无符号和有符号的转换问题:
当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。例如unsigened int a=-10; int b=1; 一个三元表达式中(a+b>5)?printf("a>b"):printf("b?>a"); 这里的结果是a>b因为-10变成了一个非常大的正整数,注意有些同学做实验时用printf来验证输出的数值,这其实是不对的,因为%d规定的是十进制有符号整数,会按照正常四则运算输出有符号数,所以应该使用cout看结果。
整数转换规则中的无符号和有符号的转换问题:
当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。例如unsigened int a=-10; int b=1; 一个三元表达式中(a+b>5)?printf("a>b"):printf("b?>a"); 这里的结果是a>b因为-10变成了一个非常大的正整数,注意有些同学做实验时用printf来验证输出的数值,这其实是不对的,因为%d规定的是十进制有符号整数,会按照正常四则运算输出有符号数,所以应该使用cout看结果。