条件演算子の使い方
この記事では、条件演算子の使い方について説明する。
1. 目的
・条件演算子の使い方について理解する。
・条件演算子を使って、実際にプログラムを作成し、使い方を学ぶ。
演算子については下記にも記載している:
・C言語基礎知識21(演算子) - Project_OKI’s diary
目次
2. 条件演算子の使い方
2.1使い方
条件 ? trueの場合、実行 : falseの場合、実行
2.2 プログラムで確認
#include <stdio.h> int main(void){ // Your code here! int a=7; int b=7; int c=6; int d = 0; printf("a=%d,b=%d,c=%d\n",a,b,c); //条件演算子 //a==b?A:Bは、a==bの時Aを実行、a==bではない時Bを実行 a == b ? printf("a=bである\n") : printf("a=bじゃない\n"); b == c ? printf("b=cである\n") : printf("b=cじゃない\n"); //d=(a==b)?1:0は、a==bの時、d=1、a==bでは無い時、d=0 d=(a==b) ? 1 : 0; printf("d=%d\n",d); //変数代入 a = 7; b = 8; //aがbより大きい時 a = a //aがbより大きくない時 a = b とする。(最大値上限設定などに使える) a = a>b?a:b; printf("a = %d\n",a); }
実行結果:https://paiza.io/projects/DUERHNLofoyIB-Epbu-qug?language=c
2.3 プログラムの説明
(1) a == b ? printf("a=bである\n") : printf("a=bじゃない\n");
a == bの時、 printf("a=bである\n") を実行する。
a==b ではない時、 printf("a=bじゃない\n")を実行する。
上記プログラムの場合、a == bなので、printf("a=bである\n")が実行される。
(2) d=(a==b) ? 1 : 0;
a == bの時、 d = 1となり、
a == bではない時、 d = 0 となる。
条件によって、代入する値を選択することが出来る。
これを使用すると、最大値、最小値などをif文より短く分かりやすく書くことが出来る。
2.4 プログラムの作成(条件演算子を使用した最大値、最小値とif文との比較)
下記2つは、どちらも同じ結果となる。
if文を使用した最大値、最小値範囲確認
#include "stdio.h" #define MAX 100 #define MIN 10 int main(){ int a = 5; //最大値の確認 if(MAX <= a){ a = MAX; } //最小値の確認 if(a <= MIN){ a = MIN; } //aの値出力 printf("a=%d",a); }
実行結果:https://paiza.io/projects/-_YOWHa4fGOeXZwybAUa9w?language=c
条件演算子を使用した最大値、最小値範囲確認
このように、a= の形にすることで、数値の選択などが出来る。
#include "stdio.h" #define MAX 100 #define MIN 10 int main(){ int a = 5; //最大値の確認 a = (MAX <= a) ? MAX : a; //最小値の確認 a = (a <= MIN) ? MIN : a; //aの値出力 printf("a=%d",a); }
実行結果:https://paiza.io/projects/B-GS_ZNoJou5ZY1jyfvf_w?language=c
2.5 プログラムの作成(条件演算子を使用したカウントの更新)
aがMINより小さい場合、+1するプログラム。
while(1)でループし、i==10の時、抜ける。
このように、式を入れることも出来る。
#include "stdio.h" #define MIN 10 int main(){ int a = 5; int i = 0; while(1){ i++; ///aがMIN以下なら、+1する。 a = (a < MIN) ? a+1 : MIN; printf("a=%d\n",a); if(i==10)break; } }
結果:https://paiza.io/projects/N38xA8cCVE7MHSPw_MWGDQ?language=c
関連記事
C言語:
・組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary
・C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary
・C言語基礎知識3(配列) - Project_OKI’s diary
・知らないと損するお金の話(ふるさと納税、確定申告とワンストップ納税どっちが得?) - Project_OKI’s diary
・C言語基礎知識6(関数) - Project_OKI’s diary
・C言語基礎知識7(構造体1) - Project_OKI’s diary
・C言語基礎知識8(enum:列挙型) - Project_OKI’s diary
・C言語基礎知識9(typedef) - Project_OKI’s diary