在这里,我不知道为什么内联函数返回2而我没有返回任何值。如果我在函数中更改e的值,则函数返回3.我不知道这个请建议。
#include <iostream>
using namespace std;
int a, b;
inline int add(int e, int d)
{
e = 211;
d = 312;
//return e+d;
}
int main()
{
a = 2; b = 3;
int c = add(a, b);
cout << c;
}
答案 0 :(得分:5)
以这种方式使用函数是未定义的行为。如果函数原型说它返回了某些东西但是你忘记了return
,那么所有的赌注都会被取消。如果你打开警告,大多数编译器会警告你这样的事情。例如,gcc / clang的-Wall -Wextra
会给出警告
警告:函数返回非void [-Wreturn-type]
时没有return语句
从技术上讲,当你声明一个返回某个东西的函数时,调用那个Foo
,然后运行时为那个必须返回的Foo
分配一些内存。当您实际编写return some_foo;
时,返回的对象some_foo
正在分配的内存中构建。如果您忘记(或者不想写)return
,则分配的内存将保持未初始化状态,因此您最终会从未初始化的对象中读取,这是未定义的行为。