int y ;
y = 7000000000*1.0;
这不会在cpp 中产生错误
尽管
int y ;
y = 7000000000;
这导致整数溢出
谁能解释一下这两种情况吗。
在C++实现中,y = 7000000000*1.0
和y = 7000000000
都会导致在转换过程中溢出int
中可表示的内容。对于从浮点类型到整数类型的转换,C++标准不定义发生这种溢出时的行为。对于从一种整数类型到另一种整数的转换,它是实现定义的。
但是,编译器在编译过程中会诊断后者,但无法诊断前者。这并不意味着前者是可以的(事实并非如此(,只是编译器不报告问题(C++标准不要求报告(。