能不能寫出一個代碼,使代碼的運行結果是輸出這段代碼本身?

題主小白 突發奇想

目前能想到的唯一思路是調用gdb..但感覺這樣就不算了。。

有沒有什麼辦法,讓一段代碼無論在什麼情況下(任何文件名 任何路徑)執行都可以輸出代碼本身


完全可以。

用C語言的實現如下。

main(a){printf(a,34,a="main(a){printf(a,34,a=%c%s%c,34);}",34);}


HTML表示毫無壓力


讀取自己然後輸出自己算不?python 里一句話

with open(__file__) as f:
print(f.read())


var test = function(){
var calee = arguments.callee;

console.log(`var ${calee.name} = ${calee.toString()}`)
};

test();

我是來搞笑的!!!! ^_ _^


經典問題

http://uoj.ac/problem/8

具體方式看提交記錄就好

upd:之前鏈接沒有自動跳轉...改過來了...


這種程序被稱為quine程序,一種方法是讓程序讀入自己的文件,另一種方法則用到一些巧妙的變換,當年寫這個的時候我還年輕,寫的巨長:

#include &
#define STRING(S) #S
#define PRINT(A, B) printf("%s%s%s", A, STRING((A, B)), B)
main(){PRINT("#include &
#define STRING(S) #S
#define PRINT(A, B) printf("%s%s%s", A, STRING((A, B)), B)
main(){PRINT", ";}");}


啥也不寫


重定向呀

比如c語言,程序編譯後是exe,原來的.c還保存的。運行時只需要重定向到.c文件就好了嘛

如果你嫌這不夠。

彙編語言解決辦法

直接把cs:0到程序末尾(標記)的數據(如果你想轉化成ascll碼的話)寫入0b8000H-0bfffH之後就可以了

首答。手機打字就沒代碼了,有人問的話再補

知乎大神們請無視


你需要一對兒雙引號


寫純文本吧


你需要準備一張說明書,一堆原材料。

圖靈機:發現說明書與原材料

圖靈機:開始製造

圖靈機:製造完成,獲得圖靈機

回收圖靈機

獲得「圖靈機「與「圖靈機「。

Code:

#include &
int main(){
char *self="#include&%cint main(){%cchar *self=%c%s%c;%cprintf(self,10,10,34,self,34,10);}";
printf(self,10,10,34,self,34,10);}

貌似有個圖靈機的遞歸定理???


推薦閱讀:

開腦洞:東方神話和西方神話,能不能完美的融合到一起?
斷腸人為什麼是在天涯而不是豆瓣、知乎、虎撲、貼吧?
你們有哪些自己幻想過的有點科學根據的強大武器?
如果人類不用十進位而改用其它進位,會對現實產生什麼樣的影響?
當npc是一種怎樣的體驗?

TAG:編程 | 腦洞網路用語 |