ループや条件文を使用せずに 1 から 1000 までを出力する
プログラミングの世界では、一見単純なタスクを、従来のループまたは条件付き構文。そのようなタスクの 1 つは、1 から 1000 までの一連の数値を出力することです。
条件なしアセンブリへのコンパイル
賢い解決策には、コード スニペットをアセンブリ命令にコンパイルすることが含まれます。条件文が欠けています。次の C コードについて考えてみましょう。
#include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (&&main + (&&exit - &&main)*(j/1000))(j+1); }
このコードは、「&&」演算子を利用して関数ポインターをキャストし、「j/1000」の除算結果に基づいてオフセットを計算します。関数呼び出しを連鎖させることにより、ループや条件を使用せずに一連の数値を効果的に出力します。
関数ポインターを使用した代替アプローチ
代替ソリューションは、標準 C および関数ポインターの算術演算に依存しません:
#include <stdio.h> #include <stdlib.h> void f(int j) { static void (*const ft[2])(int) = { f, exit }; printf("%d\n", j); ft[j/1000](j + 1); } int main(int argc, char *argv[]) { f(1); }
このコードは関数の静的配列を使用します。前の例と同じ結果を達成するためのポインター。これらの関数を動的に選択して呼び出すことで、条件文やループの使用を回避します。
以上がループや条件文を使わずに C で 1 から 1000 までの数値を出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。