【问题标题】:Function in C not returning anything when it's supposed to return int [duplicate]C中的函数在应该返回int时不返回任何内容[重复]
【发布时间】:2012-05-31 01:12:25
【问题描述】:

可能重复:
Function returns value without return statement

返回 int 但没有显式返回任何内容的函数的返回值是什么。

例如输出

    int fun()
    {
            printf("\ncrap");
    }


    void main()
    {
            printf("\n return value of fun %d", fun());
    }

我得到的输出是:

  crap
  return value of fun 1

这取决于我使用的编译器吗?

谢谢!!!

【问题讨论】:

  • 你使用的是哪个编译器?
  • @Tom...我正在使用 gcc 版本 4.6.1
  • 答案是 eax 寄存器中的任何内容,我必须添加 __asm { mov eax, eax; } 在函数的末尾,以便让它在 VC++2010 上编译。得到 1 的值很奇怪,因为我原以为它会是 printf("\ncrap") 调用的返回值,本来应该是 5。

标签: c


【解决方案1】:

你在 fun() 函数中没有返回值,所以返回的值是未定义的。

【讨论】:

    【解决方案2】:

    它可能会返回 EAX 寄存器中的任何内容,如果没有明确的返回值,这可能是不可靠的:

    https://stackoverflow.com/a/4644913/375399

    【讨论】:

      【解决方案3】:

      这取决于编译器。 这是我的输出,供您参考

      编译器:i686-apple-darwin11-llvm-gcc-4.2

      crap
      return value of fun 0
      

      【讨论】:

        猜你喜欢
        • 2021-03-05
        • 1970-01-01
        • 2016-08-10
        • 2021-05-03
        • 2016-09-16
        • 2021-12-22
        • 2020-06-25
        • 1970-01-01
        • 2020-06-17
        相关资源
        最近更新 更多