이 연산자는 if~else문을 일부 대체할 수 있고, 피 연산자가 3개이기 때문에 삼항 연산자 라고도 불린다. 조건 연산자는 다음과 같이 구성된다. 

(num1>num2) ? (num1) : (num2);

위 코드에서 조건이 참이면 num1 을 반환하고 거짓이면 num2를 반환한다. 대입연산자보다 조건연산자의 우선순위가 높기 때문에 다음과 같이 활용할 수 있다.

int num3 = (num1>num2) ? num1 : num2;

 

다음은 조건연산자를 활용하여 입력한 정수의 절댓값을 출력하는 예시이다.

#include <stdio.h>

int main(void)
{
    int num, abs;
    printf("input num : ");
    scanf("%d", &num);

    abs = num>0 ? num : num*(-1);
    printf("result : %d\n", abs);
    return 0;
}

'Language > C, C++' 카테고리의 다른 글

[C] continue  (0) 2020.12.05
[C] break  (0) 2020.12.05
[C] 조건적 실행  (0) 2020.12.05
[C] for  (0) 2020.11.29
[C] do~while  (0) 2020.11.28

C에서 if 라는 키워드는 조건적 실행(조건에 따라서 실행을 하느냐 마느냐)를 가능하게 한다. if문은 조건이 만족하면 if문 아래의 문장이 실행되고, 조건이 만족하지 않으면 실행하지 않는다. if문의 영향을 받는 문장은 중괄호로 감싸고 한 줄이라면 들여쓰기로 구분할 수 있다.

다음 코드는 입력받은 숫자에 따라 0보다 큰지, 작은지, 0인지 판단하는 코드이다.

#include <stdio.h>

int main(void){
    int num;
    printf("input number : ");
    scanf("%d", &num);

    if(num<0)
        printf("number is smaller than 0. \n");
    
    if(num>0)
        printf("number is bigger than 0. \n");

    if(num == 0)
        printf("number is 0. \n");

    return 0;
}

 

else 라는 키워드는 독립적으로는 사용할 수 없고, if와 함께 사용해야 한다. if절의 조건이 참이면 if 블록이 실행되고, 거짓이면 else 블록이 실행되는 구조이다. 다음 코드는 입력한 값이 0이면 0이라고 출력하고 다른 값이면 0이 아니라고 출력하는 코드이다.

#include <stdio.h>

int main(void)
{
    int num;
    printf("input number : ");
    scanf("%d", &num);

    if(num==0)
    {
        printf("number is 0\n");
    }
    else
    {
        printf("number is not 0\n");
    }

    return 0;
}

 

위 코드의 경우에는 두 개의 블록중 하나를 선택하여 실행하는 코드였다. else if 라는 키워드를 사용하면 3개이상의 블록중 하나의 블록을 선택하여 실행하도록 할 수 있다. 처음에는 if 절로 끝나고 마지막은 else 절로 끝난다. if절과 else절 사이에는 else if 절을 몇개든지 추가할 수 있다. 조건의 만족 여부 검사는 위에서 아래로 진행되고 조건이 만족되어 해당 블록을 실행하고 나면 마지막 else까지 아래의 블록들은 전부 건너 뛴다.

#include <stdio.h>

int main(void)
{
    int num = 3;
    
    if(num < 0)
    {
        printf("num is smaller than 0\n");
    }
    else if (num > 0)
    {
        printf("num is bigger than 0\n");
    }
    else if(num==3)
    {
        printf("num is 3\n");
    }
    else
    {
        printf("num is 0\n");
    }

    return 0;
}

위 코드의 경우 조건에 만족하는 첫번째 else if절을 실행하고, 다음 코드들은 전부 실행하지 않는다. 두번째 else if 절도 조건을 만족하지만 이미 위 조건을 만족했기 때문에 실행하지 않는다.

'Language > C, C++' 카테고리의 다른 글

[C] break  (0) 2020.12.05
[C] 조건 연산자(삼항 연산자)  (0) 2020.12.05
[C] for  (0) 2020.11.29
[C] do~while  (0) 2020.11.28
[C] while  (0) 2020.11.27

반복문의 반복횟수를 판단하려면 while문의 경우 반복을 위한 변수와 반복 조건, 반복 조건을 거짓으로 만들기 위한 연산 등 최소 3문장을 파악해야 한다. 이 세 가지 요소를 한 데 묶어 반복 횟수의 판단이 쉬운 반복문이 for 문이다. 

반복문의 필수 요소 3가지는 반복을 위한 변수의 선언 및 초기화에 사용되는 초기식, 반복의 조건을 검사하는 목적으로 사용되는 조건식, 반복의 조건을 거짓으로 반드는 증가 및 감소 연산인 증감식이 있다. 그리고 for문을 사용하면 다음과 같은 형식이 된다.

for(초기식; 조건식; 증감식)
{
	// 반복할 코드
}

 

#include <stdio.h>

int main(void)
{
    int total = 0;
    int num;

    printf("0 to num add, What is num? ");
    scanf("%d", &num);

    for(int i = 0; i <= num; i++)
        total += i;
    
    printf("0 to %d add : %d\n", num, total);
    return 0;
}
/* output : 
0 to num add, What is num? 10
0 to 10 add : 55
*/

위 예제 코드는 0부터 입력한 값까지의 총 합을 더한 결과를 출력하는 코드이다.  원래는 for(int i = 0; 과 같이 for문 안에 초기식 변수를 선언하면 컴파일이 안됐으나 요즘은 for문 안에 변수 선언을 지원하는 컴파일러들이 많다. 

 

아래 코드와 같이 for문 중간의 조건식이 비워지면 무조건 참으로 인식하여 무한 루프가 형성된다.

for( ; ; )
{
}

 

for문도 while문과 do~while문과 마찬가지로 중첩 사용이 가능하다.

'Language > C, C++' 카테고리의 다른 글

[C] 조건 연산자(삼항 연산자)  (0) 2020.12.05
[C] 조건적 실행  (0) 2020.12.05
[C] do~while  (0) 2020.11.28
[C] while  (0) 2020.11.27
[C] 자료형 변환  (0) 2020.11.27

+ Recent posts