Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録
< anond:20250819110753 |anond:20250819110440 >

2025-08-19

anond:20250819110323

ChatGPTに聞いたらええんちゃう

いい質問ですね!

これ、実は「どっちが正しい」みたいな決着はなくて、言語文化時代背景によって意見が分かれる話題なんです。

---

1. for(;;) vs while(1) vs while(true)

for(;;)

*C言語伝統的な「無限ループ」の書き方。

* `for(初期化; 条件;更新)` のすべてを省略すると無条件ループになる。

* 昔は「最適化挙動が明確」という理由で好まれることもあった。

*UNIX系の古いソースコードでよく見かける。

while(1)

* 「1が常に真だから無限ループ」という書き方。

*こちらもC言語の慣習として広まっている。

* ただし「1って何?ブール値?」と初学者には直感的でないかも。

while(true)

*C++JavaC#などブール型が明確な言語では「一番可読性が高い」。

* 「ずっと真の間繰り返す」という自然な書き方なので、最近こちらが推奨されることが多い。

* Cではtrueを使うには stdbool.h をインクルードする必要があるので、昔は避けられがちだった。

---

2. 「for(;;)派」の人は誰?

ネットでよく言われるのは、Linuxカーネルコード規約とか古いUNIX文化の影響です。

特に有名なのは

Linus Torvalds(Linux開発者

* 「無限ループは for(;;) を使う」とカーネル開発のスタイルガイドで書かれている。

*理由は「歴史的にCで最も標準的で、誰もが見慣れているから」。

要するに「C文化圏ではfor(;;)が王道」というだけで、現代教育C++/Javaなどの文脈では while(true) の方が読みやすい、という感じです。

---

3. まとめると

C文化特にシステムプログラミング) → for(;;) が伝統的で好まれ

古いCコード教科書 → while(1) がよく出る

モダン教育C++/Java/C# → while(true) が一番わかりやす

なので、初学者が「while(true)の方が可読性高い」と思うのは大正解です 👍

---

👉質問

あなた勉強してるのって「C言語メイン」ですか?それとも「C++Java」とか他の言語も触ってます

文脈によっておすすめの書き方を整理してあげられるよ。

Permalink |記事への反応(1) | 11:08

このエントリーをはてなブックマークに追加ツイートシェア

記事への反応 -
  • 無限ループを表現するときwhile(1)よりもfor(;;)がいいってネットの誰かが言ってたんだけど誰かわかる? 専門学校でプログラム勉強してるんだけど、初学者にはこれがまったくわからなく...

    • ChatGPTに聞いたらええんちゃうか いい質問ですね! これ、実は「どっちが正しい」みたいな決着はなくて、言語文化や時代背景によって意見が分かれる話題なんです。 --- 1. for(;;) vs whi...

      • ChatGPTに知識ベースの質問するってどーなん? アイデア募ったり文章の形整えたりにGPT使うのはいいと思うけど。

        • AIは複数の選択肢の中から 「こういう場合はどれが推奨か」 って選んだり理由を解説したりするのはむしろ得意

        • 正直自分(さっきChatGPTに聞いた本人)はC+ちょっと読み書きできるレベルのクソ素人だけど、返ってきた内容は問題なく理解できたよ もっと専門的で深い知識を尋ねたらテキトーなこ...

          • 先生は「最終的に提出したコードを自分が理解してるならなんでもいいよ」ってスタイルやね。 GPTの使い方としてとりあえずそれっぽいこと言ってもらって自分でファクトチェックして...

            • 俺はプログラマじゃないけど、会社でプログラマの近くで仕事をしている。そ どんなコードにもバグはつきものだろうから、プログラマはその論理構造の破綻を見抜ける力が必須だと思...

              • どんなコードにもバグはつきものだろうから、プログラマはその論理構造の破綻を見抜ける力が必須だと思うよ。 そういうのはどっちかというとテストで保証するもの、という認識。

              • ありがとう。結局AIにコード書かせてそれをチェックするくらいなら自分で書く方がよくね?って思っちゃってAIあんま使いこなせてないんだよねー。人のコードなんて基本読みづらいし...

    • 実際の実行時に何が行われているか調べられるようになると理解できるんじゃないかな。 優秀なコンパイラのもとでは、どっちも同じ処理に変換されてしまうけど、 タコなコンパイラや...

      • ありがとう。わかりやすかった。 実行環境によってはwhile(true)だと効率悪い場合があるってことね。

      • trueと何を比較するんだよ どんな低機能コンパイラでも無限ループは無条件ジャンプ以外にコンパイルしようがないと思うが そうじゃないコンパイラがあったらもはや最適化不足じゃな...

    • 何でもいいと思う。 言語によっては loop {} みたいな書き方もあるし

    • 基本的には好みの問題だが、 while(1) これはマジックナンバー禁止の規約がある場合に引っかかる white(true) これは問題ない ただ統一性がないとわかりづらいので職場で決まりがあるなら...

    • 今さら無限ループ使うようなレイヤーのプログラム書きたくないというのはある

    • Cの原典というかのK&amp;R(The C Programming Language)で、 forをそう使って無限ループできるよと紹介されてるから、それ由来かしらね?while (true)のほうが分かりやすいとは思う。 当時はtrue/false...

      • コンパイラの事情に合わせてfor(;;)を使ってた時代があるのね。 そういうプログラムの歴史をまとめた本とか調べたらあるのかしらね。 ちょっと興味持った。

    • ウィィィィス!どうも〜█████でぇぇすぅ〜 スゥゥゥ…え〜とですねぇ、無限ループの話ですけども… あ〜なるほどなるほど、専門学校でプログラム勉強してるんですねぇ。僕...

      • ありがとう。言ってることわかりやすいし内容も変じゃないと思うんだけどそのクセ強い文体何?www

    • while(true) の方が好きかなあ。 どっちでもいいと思うよ。 これは無限ループしてますよというのを読み手に伝えられればいいわけだし。 好みの問題だと思う。

      • だよねー。 増田に聞いてみて今のところコーディング規約とかあったらそれに合わせるのが一番って理解。

      • その日の気分で変えてもええんか・・・?

        • 無限ループなんてそう書くものじゃない。 無限ループ構造にして、break(またはreturn)で逃がした方が処理的にわかりやすいという構造は、かなりのレアケだと思う。 なので、無限ループ...

記事への反応(ブックマークコメント)

全てのコメントを見る

人気エントリ

注目エントリ

ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp