c - 返回 ;这个语句返回什么?

标签 c function return printf undefined-behavior

考虑以下代码:

#include <stdio.h>

int main( )  
{ 
  int  a ;
  a = message( ) ; 
  printf("--%d",a);
}

message( )  
{ 
  printf("--%d",printf ( "\nViruses are written in C" ));
  return ;
}

我得到的输出为:(在 GCC 中)

Viruses are written in c--25--4

我的解释:return ;语句返回累加器中的值,最新的printf返回的值存储在累加器中... 这是否正确?

最佳答案

行为未定义。

您看到 4 的原因是您的代码碰巧没有覆盖用于从函数返回值的寄存器(例如 32 位 Intel 上的 eax ) 之间的 printf 打印 message 中的 --%d(打印了四个字符 --25)以及 main 中的最终 printf

关于c - 返回 ;这个语句返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20006098/

相关文章:

C-调用函数时需要在代码中模拟stdin

python - 我是否需要释放通过 CFFI 调用的 C 函数返回的内存?

python - 为什么我会收到此错误以及如何修复它?

C程序不断关闭

Oracle PL-SQL 函数未返回 true

jquery - JQuery ajax调用的返回值

c - c 中是否有一种干净的方法来创建一个函数来调用具有不同参数的其他函数?

python - 在函数中使用变量而不作为参数传递

c++ - 二叉搜索树(BST)返回左 child 被视为函数,不明白

python - 有没有办法将数据框从 Python 返回到 R ?