반응형
삼항 연산자와 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 |
반응형
'훈, IT 공부 > C,C++,MFC' 카테고리의 다른 글
[기초바로잡기]형승격(type promotion) (0) | 2017.12.27 |
---|---|
[실습코딩] 나이에 따른 분류 및 요금계산 ( 2분할 방식, 단계별 분류) (2) | 2017.12.25 |
[실습코딩]서바이벌 구조 만들기 (1) | 2017.12.21 |
[실습코딩]세 정수 중에서 가장 큰 수 구하기 (2) | 2017.12.21 |
C언어 입출력 함수 파헤치기 ( gets,getchar,puts,putchar, scanf ) (6) | 2017.12.20 |
댓글