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(3, 2)); return 0; } | cs |
다음과 같은 인라인 함수가 있다고 하자, 사실 두 수 중에서 큰 값을 반환하는 아주 간단한 함수이고, 그래서 인라인 함수로 만든 것이기도 하다. 이를 함수로 따로 만들지 않고 한 줄로 표현하고 싶다면 어떻게 해야 할까??
1 2 3 4 | int main(int argc, char **argv) { printf("%d 과 %d 중 최대값은 : %d \n", 3, 2, 3 > 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문 정도는 따로 함수로 만들지 않고 이렇게 한 줄로 해줄 수가 있다. 다만, 나중에 혼동이 올 수도 있으므로 주석을 잘 달거나 해주어야 할 것이다.
'개발' 카테고리의 다른 글
파이썬 2차원 배열 생성 (0) | 2019.01.02 |
---|---|
C 언어 - 파일 입출력 (0) | 2018.12.31 |
C 언어 - linked list를 노드로 구현해 봤다. (0) | 2018.12.28 |
C 언어 문자를 숫자로 & 숫자를 문자로 (0) | 2018.12.28 |
C - 구조체 배열을 함수에 사용할 때!! (2) | 2018.12.20 |