第3章 C言語の条件分岐 ~ if と for について ~
休憩室
今回は実験です。習ったばかりの条件判定の真相を調べてみましょう。
さて、以下のような構文は、どんな動きをすると思いますか? もちろん、コンパイルエラーには、なりません。
while ( 1 ) { printf("ループ中です\n"); }
全くループしない(繰り返さない)と思った人が多いのではないでしょうか? それとも、1回だけループすると思いましたか(1だけに)。 コンパイルして、実行してみて下さい。
必ず、永久にループを繰り返すはずです。 こうなってしまった時は、CtrlキーとCのキーを同時に押して下さい。 では、Cnt < 1 とかと違って、ただの数字の1なのに何故動くのでしょうか。
実は、if や for や while のカッコの中の条件判定は、 本来、0(ゼロ)以外だと処理をする、0だと処理をせずに通り過ぎるの2種類しかないのです。
では、せっかく習った「<=」や「!=」は何だったのでしょう。 次の記述を打ち込んで、実行して見てください。
#include <stdio.h> void main() { int result; result = ( (1+1) == 2 ); printf("(1+1)==2は、%dになります。\n", result ); result = ( (1+1) == 1 ); printf("(1+1)==1は、%dになります。\n", result ); printf("(1-1)==0は、%dになります。\n", ((1-1) == 0) ); (1) }
(1)のところを見てくれれば、良く分かると思います。条件判定が正しい時は、1に置き換わってくれていますね。 わかりましたか? こんな仕組みになっていたのです。
皆さんは講義の時間にこんなのを習っていませんか?(まだ、習ってなかったら、ごめんなさい)
「Aが真で、Bが偽の場合、AとBの論理和(OR)は真。論理積(AND)は偽になる」 この時に、真を1、偽を0として考えるようになっていませんでしたか?
これと同じです(C言語の場合は、1だけではなく0以外全てが真になりますが)。 ちなみに、「A || B」が論理和(OR)、「A && B」が論理積(AND)と同じことになります。
もう一つトピックスです。変数のネーミングについてです。
前ページで、変数のネーミング方法が2種類出てきたはずです。 loop_cnt と loopCnt です。通常、変数名が長くなってくると、 見やすいように abc_def や abcDef という具合に、二つか三つに区切ります(四つ以上は、ちょっと長すぎますね)。
皆さんは、どちらの方が見やすいですか?最近のC++やJavaという言語の傾向からは、 abcDef(AbcDef)の方が多いようです。しかし、abc_def もなかなか根強いです。
まぁいずれにしろ、皆さんが実際に仕事に付いたら、 同じプロジェクトで一緒になった人のネーミングに合わせることです。 大きなプロジェクトの中で、一人だけ違っていては困ってしまいます。
また、長い名前は逆にわかりずらくなるので(打ち込むのもたいへんですし)、 通常、意味がわかるようにしつつ省略します。以下は、その代表例です。
count → cnt return → ret
number → num buffer → buf
string → str temporary → tmp
しかし、初めの内はなかなかセンスのある変数名を付けられないものです。
皆さんは、なるべく上手な人のプログラムをたくさん見ることによって、 わかりやすい変数名がつけられるようになってください。
ちなみに、繰り返し制御のために使う変数に、loop_cnt や loopCnt なんて名前はあまり付けません。 説明のために、ちょっと強引に長い名前を付けただけなので、真似をしてはいけません。
< 前のページへ 次のページへ >-
IS 559680 / ISO27001
認証範囲 本社、芝大門オフィス情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社、芝大門オフィス品質方針