ホームページ > バックエンド開発 > C++ > ループや条件文を使わずに C で 1 から 1000 までの数値を出力するにはどうすればよいですか?

ループや条件文を使わずに C で 1 から 1000 までの数値を出力するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-30 21:54:14
オリジナル
417 人が閲覧しました

How Can You Print Numbers 1 to 1000 in C Without Loops or Conditional Statements?

ループや条件文を使用せずに 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート