【C言語】
三項演算子で最大値と最小値を
配列の中から見つける

三項演算子 はてな?

■if文を使って最大値/最小値を見つける

#include <stdio.h>
#include <limits.h>
int ary[] = {
	3,		
    -14,	
    159,	
    -2653,  //最少
	58979,	//最大
    -3,		
    23,		
    -846,
	2643,
};
int main(void){
	int max = INT_MIN ;
	int min = INT_MAX ;

	const size_t num = sizeof(ary)/sizeof(ary[0]); 
	for(size_t i = 0 ; i < num ; i++){ 
		if(	max < ary[i]) {
			max = ary[i];
		}
		if(	min > ary[i]){
			min = ary[i];
		}
	}
	
	printf("配列内の最大値 = %d\n",max);
	printf("配列内の最小値 = %d\n",min);
}

■三項演算子を使って最大値/最小値を見つける

//3項演算子版
#include <stdio.h>
#include <limits.h>
int ary[] = {
	3,		
    -14,	
    159,	
    -2653,  //最少
	58979,	//最大
    -3,		
    23,		
    -846,
	2643,
};
int main(void){
	int max = INT_MIN ;
	int min = INT_MAX ;

	const size_t num = sizeof(ary)/sizeof(ary[0]); 
	for(size_t i = 0 ; i < num ; i++){ 
		max = (ary[i] > max) ? ary[i] : max ; 
		min = (ary[i] < min) ? ary[i] : min ;
	}
	
	printf("配列内の最大値 = %d\n",max);
	printf("配列内の最小値 = %d\n",min);
}

■マクロを使って最大値/最小値を見つける

//マクロ版
#include <stdio.h>
#include <limits.h>
int ary[] = {
	3,		
    -14,	
    159,	
    -2653,  //最少
	58979,	//最大
    -3,		
    23,		
    -846,
	2643,
};
#define 	MAX(a,b)	(((a)>(b))?(a):(b))
#define		MIN(a,b)	(((a)<(b))?(a):(b))
int main(void){
	int max = INT_MIN ;
	int min = INT_MAX ;
	
	const size_t num = sizeof(ary)/sizeof(ary[0]); 
	for(size_t i = 0 ; i < num ; i++){ 
		max = MAX(ary[i],max); 
		min = MIN(ary[i],min);
	}

	printf("配列内の最大値 = %d\n",max);
	printf("配列内の最小値 = %d\n",min);
}

■三項演算子を使って三つの整数を大きい順に並べる

//コマンドラインから3つの整数を入力し大きい順に並べる
#include 	<stdio.h>
#include 	<stdlib.h>
#define 	max(a,b)	((a)>(b)?(a):(b))
#define 	min(a,b)	((a)<(b)?(a):(b))
int 		med(int a, int b, int c)
{
	int max = 	max(max(a,b),c);
	int min = 	min(min(a,b),c);
	return a + b + c - max - min;
}
int main(int argc,char *argv[]){
	if(argc != 4){	
	    printf("整数を3つ入力してください。\n");
		exit(1);
	}
	int a = atoi(argv[1]);
	int b = atoi(argv[2]);
	int c = atoi(argv[3]);
	printf("大(%d) >= 中(%d) >= 小(%d)\n", 
		max(max(a,b),c),
		med(a,b,c),
		min(min(a,b),c)
	);
}

遊び方
$./a.out 1 10 5

コピペしコンパイル&実行し、
動作確認をして下さい。