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

时间:2015-01-09 08:18:39

标签: c

我正在尝试以下C程序。

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

void main()
   {
       printf("%x\n", add(1,1));
       printf("%x\n", add(1,1));
   }

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

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

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:-1)

编译器依赖行为。 不要忽视编译器警告