C++ 有符号数与无符号数混合运算

当算术表达式中既有无符号数又有带符号数时,那么在进行运算之前,这个带符号数值会先被转换成无符号数!然后再进行运算。如,

unsigned i = 10;
int j = -100;
cout << i + j << endl;		// 结果输出:4294967206

解释:-100的二进制补码为:11111111111111111111111110011100,当将其解释为无符号数时,它等于4294967196。

注:补码 = 反码 + 1

事实上,只有两个类型相同的对象才能进行运算。当两个对象的数据类型不一致时,低精度的一方会尝试主动转换成与高精度的一方一样的类型,然后再进行运算。

猜你喜欢

转载自blog.csdn.net/fcku_88/article/details/88389071