C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 为什么在Ideone上编译?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,所以我在 Ideone上搞砸了,不小心提交了这段代码,但令我吃惊的是,它实际编译并运行了一个0,0 here的值.
#include <iostream>

using namespace std;

const int five(  )
{
        const int i = 5;
}

int main() {
        cout << five(  ) << endl;
        return 0;
}

然后,我在Visual studio中尝试这样做,而在Codepad,但是由于five()不返回值,所以无法编译,因为可以预期.我的问题是,当然,为什么这个编译在Ideone,即使代码,我的理解是错误的,不应该编译.

解决方法

简单(来自C 11 6.6.3“退货单”):

所以编译器几乎被允许做任何它想要的.显然,诊断是我从编译器中选择的,但是有时候可能很难诊断(比如当返回到条件逻辑内部时,函数的“结束”将永远不会达到).

请注意,我使用GCC 4.6.1(使用墙选项)得到以下警告:

test.cpp:8:1: warning: no return statement in function returning non-void [-Wreturn-type]

我不知道什么选择ideone传递给GCC(我想象 – 将会做同样的4.3.4版本,ideone使用).

一些相关信息:

在C中,在某些情况下声明为返回值实际不这样做的函数是可行的;在C中,如果实际使用函数的返回值,它只会导致未定义的行为.预标准C并不总是支持void类型,所以没有返回任何东西的函数通常被声明为显式或隐式地返回int.来自C99 6.9.1 / 12“函数定义”:如果达到终止函数函数,并且调用者使用函数调用的值,则行为是未定义的.

另外,正如几个评论中所提到的,流出main()的结尾被C和C99及更高版本特别处理.

大佬总结

以上是大佬教程为你收集整理的c – 为什么在Ideone上编译?全部内容,希望文章能够帮你解决c – 为什么在Ideone上编译?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。