Upcoming SlideShare
×

2 2. operators

329 views

Published on

0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total views
329
On SlideShare
0
From Embeds
0
Number of Embeds
52
Actions
Shares
0
3
0
Likes
0
Embeds 0
No embeds

No notes for slide

2 2. operators

1. 1. Operators
2. 2. Precedence and Associativity of Operators Operators ( ) [ ] ++(prefix) +(unary) . -> Associativity --(postfix) left to right --(prefix) ! ~ sizeof(type) -(unary) &(address) *(dereference) right to left * ++(postfix) / % - << < <= left to right >> + left to right left to right > == >= left to right != left to right & ^ /= left to right ? : *= left to right || -= left to right && += left to right | = left to right right to left %= >>= <<= &= ^= |= right to left 2
3. 3. Operators  Comparison: C연산자 Description 조건의 예 == = a == 2 != 같지않다 a != 3 < < a<3 > > a>4 <=  a <= 5 >=  a >= 3 ! 부정 !(a < 3) && and (3 < a) && (a < 5) || or (a < 3) || ( 5 < a) 3
4. 4. Operators  Arithmetic Operator Description Example + + a+2 - - a–3 * * (곱하기) a*3 / / (나누기 혹은 몫) a/4 % 나머지 a%5 ++ Incremental a++, ++a -- Decremental a--, --a 4
5. 5. Operators  Assignment Operator Description Example = assignment a=b += a=a+3 a += 3 -= a=a-3 a -= 3 *= a=a*3 a *= 3 /= a=a/3 a /= 3 %= a=a%3 a %= 3 5
6. 6. Increment and Decrement Operators  Increment operator Postfix k++ Prefix ++k  k = k - 1 ; 와 동일  Decrement operator Postfix k-Prefix --k  k = k - 1 ; 와 동일 그러나 다른 연산자와 함께 사용되면 차이가 있음. Prefix : operand가 사용되기 전에 먼저 증가/감소 시킴 Postfix : operand가 사용된 후에 증가/감소 시킴 6
7. 7. Increment and Decrement Operators [Ex] int i = 4, j; j = ++i + 3; printf(“i : %d, j = %dn”, i, j); j = i++ + 3; printf(“i : %d, j = %dn”, i, j); j = --i + 3; printf(“i : %d, j = %dn”, i, j); j = i-- + 3; printf(“i : %d, j = %dn”, i, j); i를 먼저 증가시킨 후, j는 그 값에 3을 더함 j는 i에 3을 더한 값이 되고 그 후에 i를 1증가시킴 i = 5, i = 6, i = 5, i = 4, j j j j =8 =8 =8 =8 7
8. 8. Bit Operators  <<, >>, |, &, ^,~ – << : 왼쪽으로 주어진 수 비트만큼 shift a = 100 << 1 ; printf( “%d”, a ) 100 -> 01100100 이므로 왼쪽으로 한비트 shift하면 11001000 (=200) – >> : 오른쪽으로 주어진 수 비트만큼 shift a = 100 >> 1 ; printf( “%d”, a ) 100 -> 01100100 이므로 오른쪽으로 한비트 shift하면 001100100 (=50) 8
9. 9. Bit Operators  <<, >>, |, &, ^,~ – | : 비트끼리 OR 연산 a = 100 | 200 ; printf( “%d”, a ) – & : 비트끼리 AND 연산 a = 100 & 200 ; printf( “%d”, a ) – ^:비트끼리 XOR a = 100 ^ 200 ; printf( “%d”, a ) (8bit 컴퓨터) 100 -> 01100100 200 -> 11001000 이므로 ------------------a = 11101100 (236) 100 -> 01100100 200 -> 11001000 이므로 ------------------a = 01000000 (64) 100 -> 01100100 200 -> 11001000 이므로 ------------------a = 10101100 (172) 9
10. 10. Bit Operators  <<, >>, |, &, ^,~ – ~ : 비트반전 a = ~100; printf( “%d”, a ) (8bit 컴퓨터) 100 -> 01100100 이므로 ------------------a = 10011011 (155) 10
11. 11. Example [Ex] i = 3 , j = 2 , k = 1; if ( i > j > k ) printf( “Yes” ); else printf( “No” ); [Ex] int a, i =1, j = 2, k; a = i < 2 + j; j = 5 * (k = 3); printf( “%d %d %dn”, a, i, j, k );  수학적인 표현의 의미로, j 가 i 와 k의 중간에 있다는 ( i < j ) && ( j < k ) 11
12. 12. Example  Example int a = 5, b = 6, c = 7; int d; printf( “%d %d %dn, a < b, a > b, a != b ); d = (a < b) && (b < c ); printf( “%d %d %dn”, d, (a > b) || (b > c), !(!5) ); 12
13. 13. Assignment Operators  Compound Assignment – Compound Assignment operators *=, -=, /=, %=, += op= [Ex] – variable = variable op (expression) => variable op= expression [Ex] int k = 5; k += 2; k -= 2; k *= 2; k /= 2; k %= 2; /* /* /* /* /* k = k + 2, k = k - 2, k = k * 2, k = k / 2, k = k % 2, Left와 right side에 동일 variable을 사용하는 경우 compound assignment 로 simplify 가능 k=7 k=5 k=10 k=5 k=1 */ */ */ */ */ 13