不同编译器的不同输出 - C 和 C++
您能想到“一个程序”可以为“C 和 C++ 编译器提供不同的输出”(但在同一语言下提供一致的输出)吗?
Can you think of 'a program' which gives 'different outputs for a C and a C++ compilers' (yet gives consistent output under the same language)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
该程序在 C++ 或 C99 中生成
12
,在 C89 中生成6
:This program produces
12
in C++ or C99, and6
in C89:ISO C 和 ISO C++ 之间的不兼容性
一个常见的示例是
sizeof('A')
,在 C 中通常为 4,但在 C++ 中始终为 1,因为像'A'
这样的字符常量在 C 中具有int
类型,但在 C++ 中具有char
类型> 在 C++ 中:Incompatibilities between ISO C and ISO C++
A common example is
sizeof('A')
, which is usually 4 in C but always 1 in C++, because character constants like'A'
have the typeint
in C but the typechar
in C++:来自 wikipedia,进行修改以在每种语言中产生一致的输出:
From wikipedia, altered to produce consistent output in each language:
不会在 C++ 中编译,会在 C 中编译。
Will not compile in C++ and will compile in C.