アットウィキロゴ

「if文」のページです



ゲームなど殆どのものが、条件分岐の積み重なりで出来ています

#include <stdio.h>
 
int main()
{
	int a = 1;
 
	if(a == 1)
		printf("aは1です\n");
 
	return 0;
}
 

実行結果


「if文」とは、括弧内の値が0以外(true)の時、横に書いてある事、もしくは横に何も書いていなかった場合、一行下に書いてあることを実行します

逆に、括弧内の値が0(false)だった時は横か下の事を実行せずに通り過ぎます

例1
 
if(true) 実行したいこと
 

例2
 
if(true)
    実行したいこと
 

また、実行したいことが何行にもわたる場合は中カッコ( { & } )で囲んでください

例3
 
if(true){
  実行したいこと1
  実行したいこと2
  実行したいこと3
}
 



プログラムでは、条件式が正しい(真)時、その条件式は「1」となり、

また逆に、間違っている(偽)時は「0」

になります


その決まりを利用して、サンプルソースコードでは

if(a == 1)
  printf("aは%dです\n");
 

と書かれています

「if(a == 1)」というところの「==」とは

右と左の値が等しい、つまり「イコール」を表します

「=」一つだと、代入になってしまうので、二つ書きます




では、カッコ内の条件が偽の時だけ実行させたいものがある時はどうするかというと

「else文」を使います


if(a == 1)
    printf("aは1です");
else
    printf("aは1ではありません");
 

このように書いた場合、「a」が1では無い時「printf("aは1です");」がスルーされ

「printf("aは1ではありません");」が行われます


また、「a」が1だった場合は「printf("aは1です");」が行われ

「printf("aは1ではありません");」はスルーされます


例1
 
if(条件式)
  条件式が真の時、実行したいこと
else
  条件式が偽の時、実行したいこと
 

if文と同じく、横に書く事もできます

例2
 
if(条件式)
  条件式が真の時、実行したいこと
else 条件式が偽の時、実行したいこと
 

中カッコで閉じることも出来ます

例3
 
if(条件式){
  条件式が真の時、実行したいこと1
  条件式が真の時、実行したいこと2
  条件式が真の時、実行したいこと3
}else{
  条件式が偽の時、実行したいこと1
  条件式が偽の時、実行したいこと2
  条件式が偽の時、実行したいこと3
}
 


2つ目のサンプルとして「a」と「b」の数字分けを書いておきます
「a」「b」の値を変えて、if文の動きを見てみてください

#include <stdio.h>
 
int main()
{
	int a = 1;
	int b = 5;
 
	if(a == 1){
 
		if(b == 5)
			printf("aは1です。bは5です。\n");
		else
			printf("aは1です。bは5ではありません。\n");
 
	}else if(b == 5)
			  printf("aは1ではありません。bは5です。\n");
		  else
			  printf("aは1ではありません。bは5ではありません。\n");
 
	return 0;
}
 

「else if(b == 5)」のところで

「if(b == 5)が何行にもわたっているのに、中カッコで囲まないのはなんで?!」

と思うかもしれません

実は、その「何行」とは全てが「if(b == 5)」の内容だと言うことがわかると思います(elseも含め)

つまり、}elseと同じ行である「if(b == 5)」の部分を行うということは、残りの行、全てを行うことに等しいんです

なので、中カッコがいらないと言うことになります




if文はプログラムの論理の土台といってもいいでしょう

ただ、論理が複雑になるということは、それに伴って、落とし穴、つまりバグが増えるという事にもなります

if文を使うときは、論理をしっかり理解した上でつかってください

タグ:

+ タグ編集
  • タグ:
最終更新:2011年08月22日 13:23
添付ファイル