本文介绍了缺少返回值的函数,运行时的行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如预期,编译器(VisualStudio 2008)会发出警告

As expected, the compiler (VisualStudio 2008) will give a warning

int doSomethingWith(int value)
{
    int returnValue = 3;
    bool condition = false;

    if(condition)
        // returnValue += value; // DOH

    return returnValue;
}

int main(int argc, char* argv[])
{
    int foo = 10;
    int result = doSomethingWith(foo);
    return 0;
}

但程序运行正常。函数doSomethingWith()的返回值为0。

But the program runs just fine. The return value of function doSomethingWith() is 0.

Is只是未定义的行为,或者是否有一定的规则在运行时如何创建/计算结果值。非POD数据类型作为返回值会发生什么?

Is is just undefined behavior, or is there a certain rule how the result value is created/computed at runtime. What happens with non-POD datatypes as return value?

推荐答案

它是ISO C ++标准第6.6节中规定的未定义行为。 3:

It is Undefined behaviour as specified in the ISO C++ standard section 6.6.3:

这篇关于缺少返回值的函数,运行时的行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 19:50