トリッキーコードネット トップへ戻る   C/C++, Java, Perl, PHP, JavaScript, アルゴリズム, ショートコーディング, IOCCCコードの解説, 等々

サイト情報

トリッキーなコード

7行プログラミング

物凄いコード集

アルゴリズム

データ構造

C/C++な話題

コードサンプル

ツール/環境構築

開発ノウハウ 等

ネタ/ジョーク集

おススメ書籍/サイト

サイトTOP >> 物凄いコード集 >> ソースコードと同じ文字列を出力 (C言語)

ソースコードと全く同じ文字列を出力

さて、↓のコードを実行すると・・・
#define X(x) #x
char x[]=X(main(){puts(X(#define X(x) #x));printf(X(char x[]=X(%s);%s),x,x);});main(){puts(X(#define X(x) #x));printf(X(char x[]=X(%s);%s),x,x);}
こんな結果が表示されます^^;) (クリックで拡大) ソースコードそのまま表示 (※ VC++2005では、putsとprintfが定義されてないよ~と警告が出るけれど、とりあえず実行可) さて、↓のコードを実行すると・・・
int main(){char c='"',*text="int main(){char c='%c',*text=%c%s%c;printf(text,c,c,text,c);return 0;}";printf(text,c,c,text,c);return 0;} 
こんな結果が表示されます^^;)(クリックで拡大) ソースコードそのまま表示2 (※VC++2005では、printfが定義されてないよ~と警告が出るけれど、とりあえず実行可) ・・・前置きも何もなく、いきなりコードと実行結果だけを載せましたが、 これらのコードの意図するところが何か、ご察知頂けましたでしょうか?? よ~く、よ~く、コードと出力結果を見比べて見て下さい (・_ ・)ジーッ 実はこれらのコードは、ソースコードと出力結果が全く同じなんです!! (まぁ、題名にそう書いてあるのでバレバレでしたよねw) いや~~、面白いですね~^^;) これを考えるのは、プログラマーのボケ防止(頭の体操)に効果がありそうな気がします。 追記 (新しいVer.発見)
int a[]={0,41,60,-1},*b=a,*c=a;char q[]="int a[]={0,41,60,-1},*b=a,*c=a;char q[]=\0#include <stdio.h>\0main(){for(;*b!=-1;b++){printf(q+*b);for(*c||putchar(34);-1<*c;c++){printf(q+*c);putchar(92);putchar(48);}*b||putchar(34)&putchar(59); putchar(10);}}\0";
#include <stdio.h>
main(){for(;*b!=-1;b++){printf(q+*b);for(*c||putchar(34);-1<*c;c++){printf(q+*c);putchar(92);putchar(48);}*b||putchar(34)&putchar(59);putchar(10);}}
         このエントリーをはてなブックマークに追加   


作業効率化・ライフハックのオススメ記事




コンピュータ・テクノロジーのオススメ記事





恋愛・人間関係のオススメ記事




※ 当サイトは、トップページからリンクで辿る事の出来るページに限り、リンクフリーです。
※ 当サイトの閲覧/利用によって生じた如何なる損害も、当サイト管理人は責任を負いません。
※ 当サイトの内容を転載される場合は、当サイトへのリンクをお願い致します。