본문 바로가기

개발

C 언어 if-elseif-else문을 한 줄로!

1
2
3
4
5
6
7
8
9
10
__inline int max(int a, int b){ 
    if (a > b)
        return a;
    else
        return b;
}
int main(int argc, char **argv) {
    printf("3 과 2 중 최대값은 : %d", max(32));
    return 0;
}
cs


 다음과 같은 인라인 함수가 있다고 하자, 사실 두 수 중에서 큰 값을 반환하는 아주 간단한 함수이고, 그래서 인라인 함수로 만든 것이기도 하다. 이를 함수로 따로 만들지 않고 한 줄로 표현하고 싶다면 어떻게 해야 할까??


1
2
3
4
int main(int argc, char **argv) {
    printf("%d 과 %d 중 최대값은 : %d \n"323 > 2 ? 3 : 2);
    return 0;
}
cs


 다음과 같이 할 수 있다! 3 > 2 ? 3 : 2 이 부분을 잘 살펴보면 


( 조건문 ) ? (참일 시 이거) : (거짓일 시 이거)


이런 식으로 동작을 한다는 것을 알 수가 있다. 마치 if-else문을 한 줄로 표현한 것과 같아진다. 

그러면 if-else if-else문을 한 줄로 표현할 수도 있을까??



1
2
3
4
5
6
7
8
__inline int some_function(int a) {
    if (a == 0)
        return 1;
    else if (a == 1)
        return 3;
    else
        return a * 2;
}
cs


 위와 같은 인라인 함수를 한 줄로 표현해 보자는 것이다!! 잠시 생각을 해 보시고... 정답은 아래에 있다.



















1
2
3
4
5
6
7
8
9
int main()
{
    int user;
 
    scanf_s("%d"&user);
    printf("inline return is %d", (user == 0) ? 1:((user == 1) ? 3 : user * 2));
 
    return 0;
}
cs


 짜잔~ 이런 식으로 해줄 수 있을 것이다. 물론 모범 답안은 아니다. 실행 결과가 잘 나오기만 하면 된다. 간단한 if-else if-else문 정도는 따로 함수로 만들지 않고 이렇게 한 줄로 해줄 수가 있다. 다만, 나중에 혼동이 올 수도 있으므로 주석을 잘 달거나 해주어야 할 것이다.