假设你有这样的 C 代码:
#include <stdio.h>
int main(){
printf("Hello, world!\n");
printf("%d\n", f());
}
int f(){
}
它用 gcc 编译得很好,输出(在我的系统上)是:
你好世界!
14
但是..但是..这怎么可能?我认为 C 不会让你编译类似的东西,因为 f() 没有返回整数的 return 语句。为什么这是允许的?这是 C 功能还是编译器遗漏,14 从哪里来?
在这种情况下,根据具体平台,返回值可能是返回寄存器中恰好留下的任何随机值(例如EAX
在 x86 上)在汇编级别。允许不显式返回值,但给出未定义的值。
在本例中,14 是返回值printf
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)