Project_OKI’s diary

エンジニアの勉強ブログ

C言語基礎知識29(条件演算子の使い方)

条件演算子の使い方

この記事では、条件演算子の使い方について説明する。

 

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

 

 

関連記事

過去の記事:

知らないと損するお金の話(ふるさと納税、確定申告とワンストップ納税どっちが得?) - 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

C言語基礎知識10(extern宣言) - Project_OKI’s diary

C言語基礎知識11(#define) - Project_OKI’s diary

 

組み込みC言語