C语言中没有分号且没有IF / WHILE / FOR语句的hello world

我的朋友说可以编写一个C程序,打印“hello world”而不用IF/WHILE/FOR ,也不用分号。 经过最低限度的研究,我告诉她这是不可能的。 可能吗?

我一直在试图从包含文件中find一个“便携式”的方式来窃取分号。 这在Linux下工作:

 int main(int ac, char **av) { #define typedef #define uint8_t a[printf("hello world\n")] #include <stdint.h> } 

这导致一个typedef unsigned char uint8_t成为我的printf。

另一个有用的技巧是#定义每个标准的stdinttypes,使stdint.h简化为一堆分号。

这两种方法在FreeBSD上都是__uint8_t ,因为它使用私有中间types(比如__uint8_t ),这意味着在引用的例子中删除typedef失败,并且阻止我成功地移除其他情况下的所有非分号。

似乎应该可以从包含文件中干净地窃取分号。 任何人都可以改善我的尝试?

 #include <stdio.h> int main() { switch (printf("Hello, world!\n")) {} } 

如果你的朋友说“哦,你也不能使用开关”,那么:

 #include <stdio.h> int main(int argc, char *argv[printf("Hello, world!\n")]) {} 

对于是否提出这个build议,我很t裂,因为这取决于问题的确切措辞,但是:

 #error hello world 

(如果没有别的,也许它会避开后续“你怎么打印你好,没有main世界”…)

可以编写一个C程序来打印“hello world”而不用IF / WHILE / FOR,也不用分号。

简单。 请注意,C是区分大小写的。

 int main() { if (printf("Hello, World\n")){} } 

if是C中的一个关键字,则IF不是。

你也可以解决这个限制

 #define X i##f #define Y whi##le #define Z f##or #define W swi##tch 

关于什么:

 #include <stdio.h> int main(void *HAHA[printf("Hello world!\n")]) {} 

不是C酷:)

你可以使用switch语句来获得你想要的输出,这里是下面的代码

 #include<stdio.h> int main() { switch(printf("hello world")) return 0; } 

希望对你有帮助