【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);
}