C言語菜鳥基礎教程の条件判断


(一)if…else
まずプログラムを作ります。

#include <stdio.h>

int main()
{
  int x = -1;
  if(x > 0)
  {
    printf("x is a positive number!
"); } else { printf("x is not a positive number!
"); } return 0; }
実行結果:x is not a positive number!プログラム解析:
整数xを定義し、値を与えます。この値は0より大きいか、それとも0より大きくないか(0より小さいか)です。
0より大きい場合は、x is a positive numberを印刷します。
0より大きくなければ、x is not a positive numberを印刷します。
ここではオンラインコンパイラを使わないでください。本機のコンパイラを使ってください。本機のコンパイラでブレークポイントを設定して逐次実行すると、ifのprintf文とelseのprintf文は一つしか実行されないことが分かります。これはifとelseが相互反発の関係なので、全部実行することは不可能です。
(二)if…else if…else
プログラムを少し変えます

#include <stdio.h>

int main()
{
  int x = 0;
  if(x > 0)
  {
    printf("x is a positive number!
"); } else if(x == 0) { printf("x is zero!
"); } else { printf("x is a negative number!
"); } return 0; }
実行結果:x is zero!プログラム解析:
条件が二つ以上の場合は、if...else if...else...の文型が使えます。
このプログラムの条件は0より大きいか0より小さいかの3つに分けられます。
0より大きい場合はx is a positive numberを印刷します。
0に等しい場合は、x isゼロを印刷します。
0未満ならx is a negative numberを印刷します。
ここの等号は二つで、一つではありません。
C言語では、1つの等号は、例えばb=100を表します。
二つの等号は等号の左右側が等しいかどうかを判定することを表します。
(三)複数のelse ifの使用

#include <stdio.h>

int main()
{
  int x = 25;
  if(x < 0)
  {
    printf("x is less than 0
"); } if(x >= 0 && x <= 10) { printf("x belongs to 0~10
"); } else if(x >= 11 && x <= 20) { printf("x belongs to 11~20
"); } else if(x >= 21 && x <= 30) { printf("x belongs to 21~30
"); } else if(x >= 31 && x <= 40) { printf("x belongs to 31~40
"); } else { printf("x is greater than 40
"); } return 0; }
実行結果:x belongs to 21~30プログラム解析:
(1)
ここでxの値をいくつかの区間に分けます。(マイナス無限大、0)、[0、10]、[11、20]、[21、30]、[31、40]、(40、無限大)
(マイナス無限大、0)ifで判断する
[0,10],[11,20],[21,30],[31,40]はelse ifで判断する。
(40、無限大)elseで判断する
(2)
シンボル“&&&”は“そして”を表し、“&&”の左右の両方の条件が成立していることを示す場合、条件が成立すると判断します。