【发布时间】:2026-02-12 16:55:01
【问题描述】:
此代码来自 Hacker's Delight。它说这是 C 语言中最短的此类程序,长度为 64 个字符,但我不明白:
main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}
我试图编译它。它编译时有 3 个警告且没有错误。
【问题讨论】:
-
3个warning and no error代表编译成功,为什么不运行呢?
-
@Cestarian 问题不在于它做什么 - 它是如何 做到的?因此,标题。
-
这实际上不是最短的程序。实际最短的是 0 字节长。您可以让编译器成功地将一个 0 字节的 c 文件编译成可执行文件。运行该 exe 会打印 0 个字节,这是原始程序的完整源代码。
-
@GrantPeters:可以吗?如何?空源文件是有效的翻译单元,但不是有效的源文件。
-
@KeithThompson 请参阅 *.com/questions/17515790/… 了解使用此功能的 ioccc 条目