没有返回值的整数函数

时间:2019-07-19 10:32:59

标签: c++ c c++11

我正在尝试执行以下代码,因为该函数没有返回值,但是它是用整数返回类型定义的。它是如何运行的,没有任何错误。

#include <stdio.h>
int fn(int a, int b){
  int temp = b;
  a = 2*temp;
  b = a;
}
int main()
{
  int x,y,printval;
  scanf("%d%d",&x,&y);
  printval = fn(x,y);
  printf("%d", printval);
  return 0;
}

我期望输出错误,但结果为40(input:10,20)

1 个答案:

答案 0 :(得分:2)

您的代码具有未定义的行为,这意味着一切皆有可能;您完全不应该依赖它。

[stmt.return]/2

(重点是我的)

  

从具有cv void返回类型的构造函数,析构函数或非协程函数的末尾流出,等同于没有操作数的return否则,从main或协程([dcl.fct.def.coroutine])之外的函数结束流出会导致不确定的行为