본문 바로가기

Programming/C

C Study 02 - 연산자

연산자 우선순위

우선순위, 낮을 수록 먼저 수행 

부호 

 우선 방향

 1

 ()   []   ->   .

 →

 2

 ! ~ ++ -- + -(부호) *(포인터) & sizeof

 ←

 3

 *(곱셈) / %

 →  

 4

 +  - (덧셈 뺄셈)  →  

 5

 <<  >>  →  

 6

 < <=  > >=

 →  

 7

 ==  !=  →  

 8

 &

 →  

 9

 ^

 →

10 

 |

 →

11 

 &&

 →

12 

 ||

 →

13 

 ?   :

 ←

14 

 = 복합 대입

 ←

15 

 ,  →  


Ex ) 

void main()

{

int num1 = 1;

int num2 = 2;

int result;

1. result = (num1 && num2) || (num1 + num2);  // O

2. result = num1 || num2 == (num2 - num1);  // 0

3. result == num1 || num2 = (num2 - num1);  // X

}

1. 계산 순서

1. (num1 && num2)

2. (num1 + num2) 

3. (num1 && num2) || (num1 + num2)

4. result = (num1 && num2) || (num1 + num2)

2. 계산 순서

1. (num2 - num1)

2. num2 == (num2 - num1)

3. num1 || num2 == (num2 - num1)

4. result == num1 || num2 = (num2 - num1)

3. 계산 순서

1. (num2 - num1)

2. result == num1

3. result == num1 || num2

4. result == num1 || num2 = (num2 - num1);

 // = 는 결과값 대입이므로 변수 = 값 이 아닌 값 = 값 이므로 값에다 값을 대입하는 형식이기 때문에 컴파일 오류 발생



삼항 연산자


삼항 연산자도 마찬가지로 연산자 우선순위에 결과를 반영한다. 

(조건 ) ? 조건이 참일 경우 : 조건이 거짓일 경우

와 같이 쓰이며,

다음과 같이 

val1 == 30 ? result = 1 : result = 2;

일때, val1 조건이 참일 경우 result 에다 1을 정의하고

val1 조건이 거짓일 경우 result 에다 2를 정의한다.



'Programming > C' 카테고리의 다른 글

C Study 03 - 반복문과 조건문  (0) 2012.07.25
gotoxy 함수 구현 및 방향키 값  (0) 2012.07.25
C Study 01 - 기초 2  (3) 2012.05.02
C Study 01 - 기초 1  (0) 2012.05.02
Compile 과정  (0) 2012.05.01