No.3ベストアンサー
- 回答日時:
例えば
for(i=0;i<10;++i)
printf("%d:",i) ; /* (1) */
printf("%d\n",2*i); /*(2)*/
とあったら(1)と(2)を10回ずつ実行しそうですよね。でも、実際には(1)を10 回実行した後に(2)が実行されます。
プログラムの構造を無視して(1)と(2)を「見やすく」揃えたために、よくないインデントになってます。
for(i=0;i<10;++i)
printf("%d:",i) ; /* (3) */
printf("%d\n",2*i); /*(4) */
これだったら、(3)と(4)は別だとわかりやすくなりますよね。
あるいは、(1)(2)を10回ずつ、が正しい動作で、{}を忘れているのかもしれません。だとしたら、次のように直す必要があります。
for(i=0;i<10;++i){
printf("%d:",i) ; /* (1') */
printf("%d\n",2*i); /*(2')*/
}
この程度の量ならまだなんとかなりますが、プログラムの規模が大きくなると、間違いのもとになります。
そこで、よりよいインデントでプログラムを読みやすくして、間違いを減らそう、ということです。
で、「読み易い」にも個人差があるので、いろんな流儀があって、グループで開発するときは、それを統一することが大事、というのは先の方の回答にある通りです。
特にCはきたなく書こうと思えばとことんきたなく書けます。そんなきたなさを競うコンテストがあるくらいです(→参考URL)。(インデント以外の技も使われてますが)
入選作品を見ると、アスキーアートになってたり、四角に収まってたりと、きれいに改行されてます。が、プログラムとしては読みにくいことこの上ありません。
参考URL:http://www.ioccc.org/years.html
No.2
- 回答日時:
通常は構造化言語のひとつであるCでは、制御構造ごとに字下げをして、プログラミング上の意味的に区別を付けるのが、一般的です。
でも、実は細かいところで、人により癖というかやりやすい(見やすい)方法が違っていて、多人数で開発などをするときには、障害になります。
チームの流儀にあわせるようにするしかありません。
C言語では、特別な場合を除いては、インデントにプログラム上の意味はありません。他の多くの「フリーフォーマット言語」でも同様です。
詳しくは、リンク先を参照してください。
参考URL:http://ja.wikipedia.org/wiki/%E5%AD%97%E4%B8%8B% …
No.1
- 回答日時:
インデントとは字下げのことです。
インデントがよくないってどういうことですか?
→行によって3文字目からとか5文字目から始ったりして一貫性がないなど。一般的には、4文字ごとに字下げします。
見やすく揃えて改行すればいいだけなのでしょうか?
→だめです。”見やすく揃えて改行すれば”の解釈が人によって異なるため、複数で開発しているときに一貫性がなくなります。
字下げのルールを決めることが重要です。
なぜ字下げの一貫性を保つかというと、見やすいというメリットのほかに、CVSやSVNで差分をとったときに不必要な変更箇所を極力減らすことができるというメリットがあります。
一般的にはEclipseなどのIDEやテキストエディタなどのインデント機能を用いて一貫性を保ちます。
C言語なのですが、インデントがよくないと何かだめなことがありますか?
→あります。上記に書いたとおりですが、インデントがよくないと読みづらいです。高速でプログラムを読み取るときにインデントがよくないと読み違えたりしそうです。(最近はインデントが悪いプログラムなどありませんから、インデントがよくないとどれだけだめなのかあまり実経験はありませんが。)
まあとにかく、インデントもろくにできていないというのは論外です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作りたいのですが 1 2022/10/24 18:56
- Word(ワード) Word2013 一行目のインデント位置 1 2022/09/23 06:05
- 英語 英語学習のやり方を教えてください。 中学生レベルの基礎を理解していない状態から英語学習をする方法を知 7 2022/07/26 19:07
- C言語・C++・C# gettimeofday() と localtime_r() を使って現在の日時をマイクロ秒単位で表 2 2022/10/26 21:15
- 子育て 親と子育てに関する考えが合わない 5 2023/07/11 22:41
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作成するには 2 2022/10/25 21:19
- C言語・C++・C# プログラミング言語「C#」の難易度ってどれくらいですか? 4 2022/05/12 19:15
- 子育て 2歳になる息子について 7 2022/05/15 04:51
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#のシリアル通信プログラムで...
-
ASP.NET TextBox 入力制限
-
JavaScriptの引数に空白
-
Excel VBA 見本通りに...
-
Pythonの勉強を始めました。バ...
-
超初心者です。「順次実行」練...
-
ボタンコントロールのTEXT...
-
ソースコードの改行文字は何に...
-
stray '\\240' in programのエ...
-
半角スペースを含む文字列を変...
-
php でtabを空白に変換して表示...
-
XMLを作成してもタグしか表示さ...
-
テキストエリア内の改行禁止
-
Windowsのformでtextareaに入力...
-
デメタグとは?
-
GoogleChromeでレイアウトが左...
-
ブラウザでのタイ語の改行について
-
アコーディオン仕様の中の ul l...
-
リンク先のURLを非表示にし...
-
テーブルの幅を固定するとnowra...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 見本通りに...
-
ASP.NET TextBox 入力制限
-
ASCII文字列以外を検出する正規...
-
Pythonの勉強を始めました。バ...
-
半角スペースを含む文字列を変...
-
php でtabを空白に変換して表示...
-
JavascriptでIMEのON,OFF制御
-
ホームページ制作でコピーライ...
-
stray '\\240' in programのエ...
-
氏名の入力チェックに全角スペ...
-
ソースコードの改行文字は何に...
-
ボタンコントロールのTEXT...
-
入力されたテキストが、全角か...
-
Eclipseの空白が変な...
-
指定した文字を始点にスペース...
-
C#のシリアル通信プログラムで...
-
Firefoxでのテキストエリアに入...
-
JSONパース時に改行があるとエ...
-
JSで全角英数記号を半角英数記...
-
カラムの末尾にスペースが入る
おすすめ情報