小编Mik*_*ike的帖子

我们不必将函数的返回值赋给变量吗?C/C++

我已经使用C/C++大约三年了,我不敢相信我以前从未遇到过这个问题!

以下代码编译(我刚刚尝试使用gcc):

#include <iostream>

int change_i(int i) {
  int j = 8;
  return j;
}

int main() {
  int i = 10;
  change_i(10);
  std::cout << "i = " << i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

并且,程序打印i = 10,正如您所料.

我的问题是 - 为什么要编译?我本来期望一个错误,或者至少是一个警告,说有一个未使用的返回值.

天真地,我会认为这是一个类似的情况,当你不小心忘记非void函数中的返回调用.我明白这是不同的,我可以看到为什么这个代码没有任何内在错误,但它似乎很危险.我刚刚在我的一些非常古老的代码中发现了类似的错误,代表了一个可以追溯到很久的错误.我显然应该这样做:

i = change_i(10);
Run Code Online (Sandbox Code Playgroud)

但是忘了,所以它永远不会改变(我知道这个例子很愚蠢,确切的代码要复杂得多).任何想法将不胜感激!

c++ return function

6
推荐指数
2
解决办法
2253
查看次数

标签 统计

c++ ×1

function ×1

return ×1