gpt4 book ai didi

c++ - 没有返回语句但编译并返回正确答案的函数

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:54 25 4
gpt4 key购买 nike

在下面的代码部分,函数中没有 return 语句,但它仍然编译并给出了正确的答案。这是正常行为吗?

#include <iostream>

int multiply (int x, int y) {
int product = x * y;
}

int main (int argc, char **argv) {
std::cout << multiply(4, 5) << std::endl;
return 0;
}

最佳答案

不,从函数中得到正确答案不是正常行为,这是巧合。你不应该依赖这个。

从 C++03 开始​​,6.6.3 返回语句/2(以及 C++11 的相同部分):

Flowing off the end of a function is equivalent to a return with no value; this results in undefined behavior in a value-returning function.

可能会发现您得到正确答案仅仅是因为调用约定的副作用。

例如,如果函数值在 (mtyhical) r0 寄存器中返回,则可能是 计算 在函数中使用该寄存器来保存该值,然后将其存储到代表 product 变量的内存中。所以当你返回时它在 r0 中的事实只是事情完成方式的宿醉。

使用不同级别的优化进行编译,或使用其他编译器,甚至在蓝月期间的周二晚上进行编译都可能会影响结果,这是未定义行为的主要问题 - 它是不可信的。至少,一个好的编译器会就此警告您。

关于c++ - 没有返回语句但编译并返回正确答案的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25049280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com