gpt4 book ai didi

c - 在末尾包含#include 文件

转载 作者:行者123 更新时间:2023-12-02 06:59:01 25 4
gpt4 key购买 nike

我有一个面试问题,面试官问我从下面的输出中我们会得到什么错误:

int main()
{
printf("hello world");
return 0;
}

#include <stdio.h>

我回答“没有错误”,它会显示输出。

谁能帮我解决这个问题???

请注意“缺少尖括号是我故意做的,所以不要为此烦恼”

最佳答案

这取决于编译器。

大多数 C 编译器可能接受该代码(可能带有警告)并生成打印预期输出的可执行文件。

在 C90 规则下,printf 的行为调用未定义;调用没有可见原型(prototype)的可变参数函数是无效的。可变参数函数可以有不同于普通函数的调用约定,你必须让编译器知道 printf是可变的,因此它可以为调用生成正确的代码。

在 C99 和更高版本的规则下,调用任何没有可见声明(可能是也可能不是原型(prototype))的函数都是约束违规,至少需要一个编译时警告。

标准没有暗示如果你调用 printf 会发生什么没有所需的原型(prototype),但实际上大多数编译器都会“正确”处理它。

失踪的'\n'在输出的末尾表示程序的行为未定义如果实现需要在输出末尾换行;是否需要是实现定义的。无论如何,添加一个换行符是个好主意。

#include <stdio.h>源文件末尾应该是无用但无害的。

我假设源文件实际上包含 #include <stdio.h>而不是 #include stdio.h ;后者是语法错误。

(实际上,当然,#include <stdio.h> 应该在顶部。在专业环境中,输出是无关紧要的,因为程序永远无法通过代码审查。)

关于c - 在末尾包含#include 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25458076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com