我读到从int
到long long int
的转换是促进,因此认为不应该有任何问题,因为没有数据丢失,不同于反之亦然转换。为什么int的int隐式转换为long long int在C++中给出了意想不到的答案?
但是,当我将两个int
s乘以大的值并将其存储在long long int
中时,它会显示负数。
例如:
int a=1000000, b=1000000;
long long int c=a*b;
cout<<c;
上面的代码给我一个负值。有人能解释为什么吗?
这是因为您使用ints进行操作,导致返回值也是可能溢出的int,然后您的升级已经太晚了。 –
我在C中使用printf中的“%lld”占位符进行打印。即使如此,它也给我带来了负面的价值。 – Bharg
可能是一个重复http://stackoverflow.com/questions/31662792/multiplication-of-two-integers-in-c – Ap31