我一直在使用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;
}
而且,该程序将打印I = 10,正如您所料。
我的问题是 - 为什么编译?我会预料到一个错误,或者至少是一个警告,说有一个返回值没有被使用。
天真,我会认为这是一个类似的情况下,当你不小心忘记了在非空函数的返回调用。我知道这是不同的,我可以看到为什么这个代码没有什么固有的错误,但它看起来很危险。我刚在我的一些非常古老的代码中发现了一个类似的错误,代表了一个长期存在的错误。我明明意思做:
i = change_i(10);
却忘了,所以这是从来没有改变(我知道这个例子是愚蠢的,确切的代码要复杂得多)。任何想法将不胜感激!
[g ++如何在忽略函数返回值时得到警告](http://stackoverflow.com/questions/2870529/g-how-to-get-warning-on-ignoring-function-return-value ) – Starl1ght
鉴于赋值('=')是一个表达式,对每个未使用的表达式发出警告将会产生问题。 – EOF
请参见C++中的[nodiscard属性](http://stackoverflow.com/documentation/c%2b%2b/5251/attributes/19006/nodiscard#t=201608121315059275439)17 – Jarod42