程序如下:
#include<iostream>
int main()
{
unsigned u=10;
long long i=-42;
std::cout<<u+i<<std::endl;
return 0;
}
输出结果是-32
#include<iostream>
int main()
{
unsigned u=10;
int i=-42;
std::cout<<u+i<<std::endl;
return 0;
}
输出结果是4294967264
导致结果不同的原因在哪
无符号数和int、long、long long这些整型互相运算时,结果没有固定的隐式转换成整型或者无符号数吗,还是说有什么规律可循
追答有规律的, 有double 结果 double 否则,有long 结果为 long , 否则有int 结果为int
有无符号数, 结果为无符号数
总结来说就是小范围的自动匹配到大范围的。。。
应该不是乱码,无符号数和int运算的时候会将int值转换成无符号数,导致加上一个负的int数相当于加上一个正数(模)
追答如果负负得正的,话那就是负数,实际上显示的是一个正数,说明超过了那个负数的最大范围,就变成正数了