我的朋友說可以編寫一個C程序,它將打印「hello world」而不用IF/WHILE/FOR
並且不用分號。經過最少的研究後,我告訴她這是不可能的。可能嗎?C語言中沒有分號且沒有IF/WHILE/FOR語句的世界你好世界
回答
我一直試圖找到一個 「便攜式」 的方式從包含文件中竊取分號。這在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。
工作的另一個訣竅是到#define
以外的每一個標準stdint類型,使stdint.h
減少到一堆分號。
這兩者在FreeBSD上都是一成不變的,因爲它使用了私有中間類型(如__uint8_t
),這意味着在引用的示例中刪除typedef失敗,並阻止我成功刪除其他情況下的所有非分號。
似乎應該可以從包含文件中乾淨地竊取分號。任何人都可以改進我的嘗試?
+1非常獨特的方法...我喜歡它。 – cdhowie 2010-11-11 03:48:18
無法在Windows(微軟的C編譯器版本。17) – ZhekaKozlov 2015-01-14 12:53:45
的#include
#include <stdio.h>
int main() {
switch (printf("Hello, world!\n")) {}
}
如果你的朋友說:「哦,你不能用開關任一個」,則:
#include <stdio.h>
int main(int argc, char *argv[printf("Hello, world!\n")]) {}
我撕裂是否暗示這一點,因爲它取決於的確切寫法的問題,而是:
#error hello world
(如果不出意外,或許就會避開後隨 「你怎麼不main
打印Hello World」 的...)
請不要這麼苛責自己 – 2010-11-10 19:08:24
的主要問題與這種技術,它實際上並沒有產生一個執行的程序。但是,它確實很聰明。而聰明的解決方案永遠不是一個不好的解決方案。 – cdhowie 2010-11-10 19:11:46
@cdh但你的意思是說「我還是王」 – 2010-11-10 19:15:08
你也可以像解決方法
#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 :)涼爽
你能解釋什麼是在另一個函數參數聲明塊中插入一個函數調用嗎?我很難理解這一點。 – 2012-07-26 22:58:21
我真的很想知道... :-) – 2012-08-26 20:15:08
的printf返回一個int(可預測一個在這種情況下也是如此),這意味着功能的完整定義,數據類型爲int的main(void *的HAHA [12]){ }爲了找出幻數是12,你必須先執行printf語句。 – Clearer 2014-12-12 22:16:14
有可能編寫一個C程序,該程序將打印沒有IF/WHILE/FOR且沒有分號的「hello world」。
簡單。請注意,C區分大小寫。
int main()
{
if (printf("Hello, World\n")){}
}
if
在C中的關鍵字,IF
不是。
爲什麼投票?我遵守這封信,就這個問題而言。當問題本身就是一種無用的「我們如何合法濫用C」的問題時,似乎有點苛刻。 – JeremyP 2010-11-11 14:28:30
你可以使用switch語句來得到你的願望輸出,這裏是低於
#include<stdio.h>
int main()
{
switch(printf("hello world"))
return 0;
}
希望的代碼,這將幫助你
- 1. 運行你好世界 - 沒有得到你好世界在屏幕上
- 2. 讓(你好,世界)的Swift語法:(字符串,字符串)=(「你好」,「世界」)
- 3. tensorflow.string_input_producer「世界你好」
- 4. FBJS你好世界
- 5. i18n世界您好世界
- 6. 爲什麼「你好*世界」不匹配「你好世界」?
- 7. Spring MVC的世界你好
- 8. java世界術語
- 9. 你好世界,裸機Beagleboard
- 10. 世界,你好,在電話
- 11. PyInstaller新手:你好世界
- 12. PHP + ie6 + cookies:沒有一個你好世界的餅乾
- 13. 最簡單的真實世界語言
- 14. 你好世界不會編譯「值或構造沒有定義」
- 15. 你好世界Android應用仿真器沒有運行
- 16. Drupal 7 CCK世界語言列表
- 17. 「你好,世界!」 DevExpress QuantumGrid的例子?
- 18. 你好在Linux上的動作世界
- 19. 你好世界的servlet不工作
- 20. 我的餵你世界燒瓶程序沒有運行?
- 21. 世界,你好MINITEST CLI例如
- 22. 可可你好世界屏保
- 23. mono gtk# - 你好世界部署到windows
- 24. CloudFoundry:你好世界和信息
- 25. 世界,你好採用了android NDK
- 26. HTTP狀態404 - 你好世界wicket
- 27. 你好世界應用程序
- 28. 你好世界Pinvoke和本地調用
- 29. 反應js不渲染你好世界
- 30. codeigniter你好世界在Ubuntu上失敗
相關:http://stackoverflow.com/questions/2754493/hello -c-with-no-semi-colonons – kennytm 2010-11-10 18:40:28
你爲什麼想要?如果你的鍵盤缺少分號,你會遇到更深層次的問題。 – 2010-11-10 18:41:45
聽起來像你的朋友在那些模糊的C和PERL比賽中狂歡? – winwaed 2010-11-10 18:48:17