-
C언어 switch case문에서 범위 조건 사용.프로그래밍/C 2021. 3. 24. 10:53반응형
총 3가지의 방법이 있다.
*모든 예시는 0~5와, 6~10을 구분하는 예시이다.
1. gcc extension의 ... 사용.
C언어 standard문법은 아니지만,
gcc extention에서는 가능하다.
Case Ranges - Using the GNU Compiler Collection (GCC)
반드시 ... 앞뒤에 공백을 붙여야한다.
#include<stdio.h> void main(){ int a; scanf("%d", &a); switch(a){ case 1 ... 5: printf("1~5\n"); break; case 6 ... 10: printf("6~10\n"); break; } }
VS에서는 에러난다.
2. 하나하나 지정해주기
정석적인 방법은 하나하나 지정해주는 것이다.
#include<stdio.h> void main(){ int a; scanf("%d", &a); switch(a){ case 1: case 2: case 3: case 4: case 5: printf("1~5\n"); break; case 6: case 7: case 8: case 9: case 10: printf("6~10\n"); break; } }
3. 몫과 나머지 이용하기
이외에, 몫과 나머지를 활용하는 방법이 있다. (구분하려는 범위들의 간격이 일정한 경우 사용할 수 있다.)
#include<stdio.h> void main(){ int a; scanf("%d", &a); switch(a/5 - !(a%5)){ case 0: printf("1~5\n"); break; case 1: printf("6~10\n"); break; } }
<참고>
Are triple dots inside a case (case '0' ... '9':) valid C language switch syntax? - Stack Overflow
How can I use ranges in a switch case statement in C? - Stack Overflow
switch statement - Syntax for case range in C? - Stack Overflow
반응형'프로그래밍 > C' 카테고리의 다른 글
C/C++ - 쉼표연산자 : Comma Operator (1) 2022.03.11 C언어 - 기본 정렬 알고리즘들(버블, 삽입, 선택) (5) 2021.09.01 C언어 : 간혹 ebcdic와 같은 encoding을 쓰는 경우, a~z가 순차적이지 않을 수 있음. (0) 2021.04.18 C언어 실수형 상수 (0) 2021.04.05 C - Printf의 Default Argument Promotions (0) 2021.04.03