c++中的整数溢出和整数乘法


int y ;
y = 7000000000*1.0;

这不会在cpp 中产生错误

尽管

int y ;
y = 7000000000;

这导致整数溢出

谁能解释一下这两种情况吗。

在C++实现中,y = 7000000000*1.0y = 7000000000都会导致在转换过程中溢出int中可表示的内容。对于从浮点类型到整数类型的转换,C++标准不定义发生这种溢出时的行为。对于从一种整数类型到另一种整数的转换,它是实现定义的。

但是,编译器在编译过程中会诊断后者,但无法诊断前者。这并不意味着前者是可以的(事实并非如此(,只是编译器不报告问题(C++标准不要求报告(。

相关内容

  • 没有找到相关文章

最新更新