C++程序的意外输出

-5 c++

我在turbo C编译器中编译了以下代码

void main()
{
  int i =400*400/400;

  if(i==400)
    cout<<"Filibusters";
  else
    cout<<"Sea ghirkins";
}
Run Code Online (Sandbox Code Playgroud)

我预期的值"i"的400,因此,输出应为无限制演讲.但是,我得到的输出是Sea Ghirkins.这怎么可能?

Bat*_*eba 5

您的类型溢出int:执行此操作的行为未定义.

a的范围int可以小到-32767到+32767.检查值sizeof int.如果它是2,那么它将无法表示400*400.您还可以检查INT_MAX和INT_MIN的值.

使用a long,必须至少为32位.也许本周末你会把自己当作一个新的编译器?