我正在尝试以下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的序列对我来说也很困惑。
答案 0 :(得分:9)
这是未定义的行为。尝试使用不同的编译器运行程序,您将获得不同的值。
尝试使用基于某些输入使用不同堆栈变量的函数。随着变量堆栈的改变,你会得到不同的值。
答案 1 :(得分:-1)
编译器依赖行为。 不要忽视编译器警告