c - 在不使用 return 语句的情况下打印函数的返回值

标签 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 的顺序让我感到困惑。

最佳答案

这是未定义的行为。尝试用不同的编译器运行你的程序,你会得到不同的值。

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

关于c - 在不使用 return 语句的情况下打印函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27856350/

相关文章:

c - C中简单文本文件行计数器的问题

c - strcpy() 和字符串左移给出错误的结果

c - 使用算术比存储变量更快吗?

acosf 实现中的 CUDA __float_as_int

c - 如何在几秒钟后终止scanf?

c - fscanf 没有正确读取文件 ~ 读取 HEX 格式字节的问题

c - 使用指针将 double 分解为字符?

c - 使用-fopenmp 编译时出现“无效的控制谓词”错误

c - 返回指向结构体的指针

c - 即使使用 fflush 也会跳过 scanf