考虑以下代码:
#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/