首页 > 后端开发 > C++ > 为什么相同的代码在 C 中打印'hello”,而在 C 中什么也没有打印?

为什么相同的代码在 C 中打印'hello”,而在 C 中什么也没有打印?

Mary-Kate Olsen
发布: 2024-11-09 16:25:03
原创
769 人浏览过

Why Does the Same Code Print

C 和 C 之间有效代码的行为差异

虽然 C 和 C 有许多相似之处,但在某些情况下,两者中的有效代码都存在在各自的语言中编译时,语言可以产生不同的结果。

函数调用和对象声明

其中一个场景与函数调用和对象声明的差异有关。在C90中,无需事先声明即可调用函数。然而,在 C 中,不允许使用未声明的函数。这种区别可能会导致编译以下代码时出现不同的行为:

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}
登录后复制

在 C 中,此代码不会打印任何内容,因为创建并销毁了类型 f 的临时对象,导致 x 成员丢失。然而,在 C90 中,它会打印“hello”,因为函数无需声明即可调用。

消除名称歧义

另一点需要注意的是使用示例代码中的名称 f。 C 和 C 都允许对函数和结构使用相同的名称。要在 C 中创建对象,必须显式指定 struct f。如果省略 struct 关键字,代码将被解释为函数调用。这种区别与调用约定的差异相结合,导致了在用 C 和 C 编译代码时观察到的不同行为。

以上是为什么相同的代码在 C 中打印'hello”,而在 C 中什么也没有打印?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板