在Integer返回类型中返回float

时间:2013-07-26 13:47:28

标签: c++ function type-conversion

程序没有显示错误并将0.05f转换为0的原因是什么?

int main()
{
  int a,b;
  cin>>a>>b;
  cout<<a+b;
  return 0.05f;
}

4 个答案:

答案 0 :(得分:3)

你隐式地将float强制转换为int,这符合c ++标准 - 但我相信如果你打开编译器警告,你会收到警告。

当我在VS2012中这样做时,我收到警告:

Warning 1   warning C4244: 'return' : conversion from 'float' to 'int', possible loss of data   

答案 1 :(得分:2)

您会收到警告(可能)但不是错误,因为隐式转换是合法的:

warning: implicit conversion from 'float' to 'int' changes value from 0.050000001 to 0 [-Wliteral-conversion]

答案 2 :(得分:0)

C ++标准具有将float转换为int的转换规则,因此完全可以。它应该编译,但你可能会收到警告。

c ++ 11标准的n3337版本的第4.9节,第1点:

  

浮点类型的prvalue可以转换为a的prvalue   整数类型。转换截断;也就是说,小数部分   被丢弃了。如果截断值不能,则行为未定义   以目的地类型

表示

答案 3 :(得分:-1)

如果您使用

float main()

而不是

int main()

它会起作用。