조건문( if ) / 비교 연산자, 삼항 연산자 / 논리 연산자 / bool 자료형 / 비트 연산자 / 연산자 우선순위 / switch문에 대해서 정리한다.
조건문 ( if )
if ( 조건식 )
{
실행코드
}
else if ( 조건식 )
{
실행코드
}
else
{
실행코드
}
- 조건식을 만족했을때 해당 코드를 실행한다.
- 조건식 뒤에 세미콜론이 붙는다면 중괄호 안의 코드는 실행되지 않고 if문이 끝나게 된다.
( 해당 실행코드가 정상적으로 실행되는 이유는 c언어에서는 코드를 중괄호로 묶을수 있기 때문이다 )
- 실행코드가 한줄이면 중괄호의 생략이 가능하다.
- 조건식에서 비교할 변수와 값, 변수와 변수는 자료형을 맞춰주어야 한다.
( 실수의 경우에는 반올림 오차가 발생할 수 있으므로 반올림 오차를 감안하여 비교한다 )
- 조건문을 분기하기 위해서는 else if ( 조건식 ) 혹은 else를 이용한다.
( 조건문을 여러방향으로 분기하기 위해서는 else if를 사용한다 )
- 조건식을 여러개 지정하기 위해서는 논리연산자를 사용한다.
- c언어에서는 0을 거짓으로 사용하고 나머지는 모두 참으로 사용한다.
비교연산자와 삼항 연산자
- 비교연산자는 값을 비교할때 사용한다.
- 연산에 필요한 값이 몇개인가에 따라 단항 연산자, 이항 연산자, 삼항 연산자로 구분된다.
( 예를 들어서 ++x, -x 같은 경우에 단항 연산자이고 a + b, a += b 같은 경우에는 이항 연산자
x ? a : b 같은 경우에는 삼항 연산자이다 )
- 삼항 연산자의 경우에는 변수(혹은 조건식) ? 값1 : 값2; 형식으로 사용한다.
( 값1은 참일때 사용, 값2는 거짓일때 사용할 값이다 )
* 삼항 연산자에서 변수가 아닌 조건식을 사용할 때는 괄호로 묶어줘서 코드의 가독성을 높여주는게 좋다.
논리연산자
- 조건식이나 값을 논리적으로 판단할때 사용
- if문에서 주로 많이 사용
- and 연산자(&&)는 두값 모두 참이여야 되기 때문에 단락 평가(short-circuit evalution)에 의해서
첫번째 값으로 결과가 확실할 때 두번째 값은 확인하지 않는 특성이 있다.
- or 연산자(||)에서도 단락 평가를 하는데 첫번째 값만 참이여도 참이기 때문에 뒤에 값은 확인하지 않는 특성이 있다.
bool 자료형
- <stdbool.h> 헤더파일을 포함해주면 true를 참으로 false를 거짓으로 나타낼수 있다.
( 헤더파일에는 bool, true, false가 정의되어 있다 )
- 자료형은 bool을 사용
- 자료형의 크기는 1byte
( int를 이용해서 참/거짓을 표현하려면 4byte의 크기를 사용해야 한다 )
- 결과를 표현할때 서식지정자는 %d를 사용한다.
비트 연산자
- 비트 단위로 연산할때 사용
- 비트로 옵션을 설정하는 방식을 플래그라고 한다.
- 비트를 반전시킬때 NOT 연산자를 사용한다.
- 쉬프트 연산자를 이용할때 3 << 3은 3 * 2^3와 같고 결과는 24이다.
그리고 24 >> 2는 24 / 2^2 = 6과 같다.
- 즉, <<은 2의 거듭제곱을 해당 값에 곱한 값과 같고 >>은 2의 거듭제곱을 나눈 값과 같다.
- 시프트 연산시에 최상위 비트나 최하위 비트를 넘어서는 비트는 사라진다.
- 부호 있는 비트의 자료형을 비트연산 할때는 부호 비트를 주의한다.
( 오른쪽으로 쉬프트 연산시에는 모자라는 공간은 모두 부호비트로 채운다 )
* 왼쪽으로 쉬프트 연산시에 처음 값이 양수임에도 불구하고 부호비트 부분을 1로 덮어쓰게 되며
양수에서 음수로 값이 변할 수 있다.
( 부호 있는 비트에서 왼쪽으로 쉬프트 연산시에는 부호비트 값을 덮어쓰게 된다 )
- 2진수 비트연산에서 양수를 음수로 바꿀때는 양수의 0과 1을 뒤집은다음에 +1을 해준다.
( 예를 들어서 1은 0000 0001인데 -1로 바꾸려면 0과 1을 뒤집어 1111 1110로 만들어준다음에
+1을 해주면 1111 1111이 -1이 된다 )
- 비트 연산자로 플래그를 켜고 끌수 있다.
* 플래그를 켤때 플래그 |= mask를 이용한다.
* 플래그를 끌때 플래그 &= ~mask를 이용한다.
* 비트를 토글할때 플래그 ^= mask를 이용한다.
( 토글은 켜져있을때 끄고 꺼져있을때 켜는것을 말한다 )
- &, |, ^ 연산 결과
- NOT 연산 결과 표
- 최상위, 최하위 비트
- 플래그 연산 방법
연산자 우선순위
- 연산자마다 우선순위가 있지만 괄호를 이용해서 우선순위를 명확하게 표현해주는게 좋다.
switch문
switch( 값을 판단할 변수 )
{
case 값1:
실행코드1;
break;
case 값2:
실행코드2;
break;
case 값3:
실행코드3;
break;
default:
실행코드4;
break;
}
- 조건이 많을때 유용하게 쓰인다.
- 해당 switch문에서 case 조건이 하나도 맞지 않을때는 default문을 실행한다.
( default문은 생략 가능하다 )
- case 뒤에는 무조건 값이 와야한다.
( 변수나 조건식은 올수가 없다 )
- 실행코드 뒤에 break가 없다면 break를 만나기전에 아래 case문에 있는 실행코드를 모두 실행한다.
- 조건식만 바뀌고 값이 바뀌지 않을때 사용하기에 적합하다.
- case문 안에 변수를 선언해주려면 중괄호를 이용해서 case를 묶어줘야 한다.
( case문 안에 있는 변수는 case문 안에서만 사용이 가능하다 )
- 판별 가능한 자료형은 정수 자료형뿐이다.
( 문자 자료형 char 또한 정수 자료형이기 때문에 사용 가능하다 )
'프로그래밍 > C' 카테고리의 다른 글
[C언어] 중첩 반복문 / goto 제어문 / FizzBuzz 문제 / 포인터 / 메모리 사용 (0) | 2017.10.14 |
---|---|
[c언어] 반복문( for, while, do.. while ) / 반복문 제어( break, continue ) (0) | 2017.10.13 |
[C언어] 문자 자료형 / 상수 / 입력( scanf ) / 증감 연산자 / 자료형 확장, 축소 (0) | 2017.10.12 |
[C언어] 정수 자료형( 크기 및 범위, 최솟값과 최댓값 표현, 오버플로우, 언더플로우, 크기가 표시된 정수 자료형 ) / 실수 자료형( 최솟값과 최댓값 표현, 오버플로우와 언더플로우 ) / 자료형 .. (0) | 2017.10.09 |
[C언어] 기본문법 / 변수 (0) | 2017.10.09 |
댓글