【发布时间】:2016-09-29 22:43:39
【问题描述】:
我在一次采访中遇到了这个问题,那个人问我如果我编译并执行下面的代码,结果是什么,为什么。我对这个问题很好奇,但我并没有真正明白。
当我输入
gcc f1.c f2.c然后./a.out时,它会在我的x64 PC 中输出一个奇怪的数字:1717986918,然后我在f2.c 中添加一行:extern double get_val();它输出 5。
f1.c:
double get_val()
{
return 5.6;
}
f2.c:
#include<stdio.h>
//extern double get_val();
int main()
{
int a=get_val();
printf("%d\n", a);
return 0;
}
【问题讨论】:
-
您期望得到什么答案?此外,在“编辑”之前,“extern”没有被注释……那个版本给你预期的输出了吗???最后,注释掉“extern”后,我从“gcc”收到一条警告消息,你收到了吗???
-
YouTube 上还有很多关于 C、方法、函数和变量声明的好资源。坚持下去,祝你找工作好运!
-
@BasicIsaac:避免引用“方法”的资源; C 没有它们。 (C++ 成员函数有时也称为“方法”,但严格来说也不正确。)
-
@KeithThompson 感谢您的提醒。我点击了 C# 标签,不知何故来到了这里。我不明白这个问题有多少反对票,如果没有 get_val() 引用,该函数会返回一个大数字,这真的很奇怪。
-
@BasicIsaac:没那么奇怪;看我的回答。
标签: c gcc compilation execute