훈, IT 공부/C,C++,MFC

삼항 연산자와 IF문 (별찍기)

IT훈이 2017. 12. 21.
반응형

삼항 연산자와 IF문 

visual studio 2013


삼항 연산자와 IF문 무엇이 다를까?


IF문과 삼항 연산자는 눈으로 보기에는 확연히 다릅니다.
IF문 


if( 비교연산 혹은 변수 ) {      // 조건식이 참일경우
수행 하려는 코드;
}else {             // 조건식이 참이 아닐경우
수행하려는 코드;
}

IF문이 이런식으로 동작을 한다면,

항 연산자

말 그대로 3개의 항이 존재한다.
피연산자의 숫자가 3개 라는 것이다.

int a = 10;
a > 10 ? 10 : 20;


첫번째 항에는 조건식
? 뒤에 두번째 항에는 참일경우 리턴하게 될 자료형
: 뒤의 세번째 항에는 거짓일 경우 리턴하게 될 자료형

피연산자가 연산식이라면 반드시 괄호로 묶어주어야 합니다.

삼항연산자와 IF문, 디스어셈블리로 따져봅시다.



코드를 디스어셈블리로 한번 살펴보았습니다. 

( visual basic 2013 에서는 Ctrl+Alt+d 단축키를 이용하면 됩니다. 혹은 Alt+8 )


디스 어셈블리에서 보게 되면 ( 기계어는 자세한 부분은 넘어갑니다. )

눈에 보기에도 삼항 연산자 보다는 IF문이 간단하게 보입니다.


코드에서 보는 간단한 부분과 디스어셈블리에서 보이는 부분은 다르다는 것을 명심하였으면 합니다.



작성한 코드 ( 분석에 사용한 코드 )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main(void){
 
    // if 문 사용
    int a = 10;
    
    if (a > 10)
        a = 10;    
    else
        a = 20;
    
 
    // 삼항 연산자 사용
    int b = 10;
    
    b > 10 ? (b=10) : (b=20);
 
    return 0;
}
cs

삼항 연산자 왜 사용하는 것일까??


삼항연산자는 위의 디스 어셈블리에서 본 것과 같이 코드상에서의 단순함을 위해 사용합니다.

디스 어셈블리할 때 IF문보다 복잡해 보이기는 하지만, 코드상에서 코드의 편리함은 확실하기에 삼항 연산 자를 사용합니다.



.삼항 연산자를 이용하여 별 찍기


 if 문 혹은 삼항 연산자를이용하여 별 찍기 프로그램을 작성하여라.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
int main(void){
 
    // 삼항 연산자로 별 찍어내기
 
    for (int i = 0; i < 5; i++){ 
        for (int j = 0; j <= i; j++){
            printf("%s", j <= i ? "*" : " ");
        }
        printf("\n");
    }
 
    return 0;
}
cs

if 문을 사용하면 줄이 길어지는 반면에 삼항 연산자는 한 줄에서 처리하였습니다.



조건문 없이 작성하는 별 찍기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
int main(void){
 
    // 삼항 연산자로 별 찍어내기
 
    for (int i = 0; i < 5; i++){ 
        for (int j = 0; j <= i; j++){
            printf("*");
        }
        printf("\n");
    }
 
    return 0;
}
cs


반응형

댓글