1. if, else, else if
if문의 기본 형식은 다음과 같습니다.
if(조건){
statement
}
if 바로 뒤에 오는 소괄호 안의 값이 1이면 중괄호 내의 statement를 실행하고 0이면 if문 전체를 건너뜁니다.
예시구문을 봅시다.
if(a == 0){
printf("a is now zero");
}
a가 만약 0이면 논리 연산자 == 에 의해 소괄호 내부의 값이 1이 됩니다.
만약 여러 개의 조건식을 적용하고 싶다면 &&(and)와 ||(or)를 사용합니다. |는 쉬프트를 누른 채로 엔터위 백슬래시를 입력하면 나옵니다.
int a = 1, b = 0;
if (a == 0 || b == 0) {
printf("or");
}
if (a == 0 &&b == 0) {
printf("and");
}
위 코드를 실행하면 or가 출력됩니다.
소괄호 내부의 조건이 참이 아니라서 건너뛰게 되었을 경우 else 와 else if를 사용해 다른 명령을 실행할 수 있습니다.
![](https://blog.kakaocdn.net/dn/eijUK9/btrA7FNhvq8/kKJ9RUAyobZApshB8U37z1/img.png)
if에 붙은 조건을 만족하지 않는다면 아래 else if(있을 수도 있고 없을 수도 있음)로 갑니다.
else if에 붙은 조건을 만족한다면 코드를 실행하고 if문 전체를 빠져나옵니다.
위 그림에서도 볼 수 있듯이 여러 개의 문장 중 단 하나만 실행하고 다음 코드블럭으로 빠져나옵니다.
간단한 if문 예제입니다.
/*********************************************************
* From C PROGRAMMING: A MODERN APPROACH, Second Edition *
* By K. N. King *
* Copyright (c) 2008, 1996 W. W. Norton & Company, Inc. *
* All rights reserved. *
* This program may be freely distributed for class use, *
* provided that this copyright notice is retained. *
*********************************************************/
/* broker.c (Chapter 5, page 81) */
/* Calculates a broker's commission */
#include <stdio.h>
int main(void)
{
float commission, value;
printf("Enter value of trade: ");
scanf("%f", &value);
if (value < 2500.00f)
commission = 30.00f + .017f * value;
else if (value < 6250.00f)
commission = 56.00f + .0066f * value;
else if (value < 20000.00f)
commission = 76.00f + .0034f * value;
else if (value < 50000.00f)
commission = 100.00f + .0022f * value;
else if (value < 500000.00f)
commission = 155.00f + .0011f * value;
else
commission = 255.00f + .0009f * value;
if (commission < 39.00f)
commission = 39.00f;
printf("Commission: $%.2f\n", commission);
return 0;
}
2. switch
바로 위에서 본 예제의 경우 너무 많은 경우가 존재하기에 else if를 계속 사용하기보다는 각각의 case에 맞춰 실행할 코드를 지정해주는 switch문을 사용하는 것이 상황에 따라 유용할 수 있습니다.
예시 구문을 보겠습니다.
switch (grade) {
case 4: printf("Excellent");
break;
case 3: printf("Good");
break;
case 2: printf("Average");
break;
case 1: printf("Poor");
break;
case 0: printf("Failing");
break;
default: printf("Illegal grade");
break;
}
switch문이 실행될 때 grade라는 변수에 대해 4이면 "Excellent"를 출력하고 3일 때는 "Good", 2일때는 "Average", 1일때는 "Poor"를, 0일 때는 "Failing"을, 나머지 값에 대해서는 모두 "Illegal grade"를 출력합니다.
이때 주의해야 할 것은 각 case마다 break를 달아놓지 않으면 다음 case로 넘어가서 명령을 실행한다는 것입니다.
switch (grade) {
case 4: printf("Excellent");
case 3: printf("Good");
case 2: printf("Average");
case 1: printf("Poor");
case 0: printf("Failing");
default: printf("Illegal grade");
}
위 코드를 실행했을 때 만약 grade가 3이라면 "GoodAveragePoorFailingIllegal grade" 가 출력됩니다.
break가 없다면 조건에 들어맞는 경우부터 코드를 순차적으로 끝까지 실행합니다.
switch문의 기본형은 다음과 같습니다.
![](https://blog.kakaocdn.net/dn/vUfIU/btrA59H9GdK/12xwIt7bxZ6zd3ZkkQjfPK/img.png)
이때 예시 구문처럼 조건을 어떤 정수로 둘 수도 있고 문자로 둘 수도 있습니다.
> 조건이 char인 경우
int main(void)
{
char ch;
printf("Enter phone number: ");
for (scanf_s("%c", &ch); ch != '\n'; scanf_s("%c", &ch)) {
switch (ch) {
case 'T':
case 'U':
case 'V': printf("8");
break;
case 'W':
case 'X':
case 'Y': printf("9");
break;
default: putchar(ch);
break;
}
}
return 0;
}
if문이 조건문의 참 거짓으로 실행여부를 결정한다면 switch는 구체적인 값으로 실행여부를 결정합니다.
3. break
break는 어떠한 코드블럭을 jump하기 위한 것으로 switch 또는 반복문에서 사용됩니다.
반복문 내부에 if문에서 break 를 실행하더라도 즉시 해당 반복문을 빠져나옵니다.
for (;;) {
printf("Enter a number (enter 0 to stop): ");
scanf("%d", &n);
if (n == 0){
break;
}
printf("%d cubed is %d\n", n, n * n * n);
}
위 코드는 대표적인 무한루프인 for(;;)를 포함하고 있습니다.
만약 0을 입력한다면 즉시 무한루프를 빠져나옵니다.
'개발 > C' 카테고리의 다른 글
[C언어] 다차원 배열(Multidimensional Array) (0) | 2022.05.30 |
---|---|
[C언어] 배열(array), sizeof (0) | 2022.05.28 |
[C언어] 자료형 분류, getchar, putchar (0) | 2022.05.25 |
[C언어] 반복문 (while, do, for) (0) | 2022.05.05 |
[C언어] printf, scanf (0) | 2022.05.03 |