不使用return语句打印函数的返回值

Gaa*_*ara 2 c

我正在尝试这个C程序.

add (int a , int b)
    {    // Do nothing   
    }

void main()
   {
       printf("%x\n", add(1,1));
       printf("%x\n", add(1,1));
   }
Run Code Online (Sandbox Code Playgroud)

GCC给出如下输出:输出:1 2

有人可以解释为什么要打印这些值.即使我认为它是垃圾,1和2的序列对我来说也很困惑.

dop*_*ime 9

这是未定义的行为.尝试使用不同的编译器运行程序,您将获得不同的值.

尝试使用基于某些输入使用不同堆栈变量的函数.随着变量堆栈的改变,您将得到不同的值.

  • 据我所知,它从堆栈或寄存器(它取决于编译器)弹出值,可能是任何东西.并且这个值不能保证并且可能导致一些垃圾值. (2认同)