DevYoon
[C언어] 연산자 본문
연산자
1️⃣ 산술연산자
이항 연산자
- +, -, *, /, %
단항 연산자
- ++, --
- a++; ➡️ 앞의 식을 처리한 다음 1을 증가시켜라
- ++a; ➡️ 1을 증가시킨 다음에 식을 처리해라
대입 연산자
=, +=, -=, *=, /=, %=
예시
1) 3/4 = 0 2) a = 10; b = a++; → b = a → a += 1 ∴ a = 11, b = 10 c = ++a; → a += 1 → c = a ∴ a = 12, c = 12 3) a = 10; a += 10; ∴ a = 20;
예시
#include<stdio.h> void main(){ int a, b; a = 4*(1/2); b = a++; printf("%d", b) } ∴ 1 (a = 4*0)
예시
y = 3+2*(x=7/2) ∴ x = 6, y = 9
- 모든 변수는 정수형 ➡️ 7/2는 3
예시
num = 6+14%5/2-2*2; 1) 14%5 = 4 2) 4/2 = 2 3) 2*2 = 4 4) 6+2-4 = 4
∴ num = 4
예시
int a = 10, b = 20; num = (a++ == 11) && (b++ == 20); 1) 10 == 11 → False num = 0 (&&는 AND, 하나라도 False이면 False)
∴ num = 0
2️⃣ 연산자 우선순위
종류 |
---|
() |
++, --, ~, ! |
*, /, % |
+, - |
<<, >> |
<, <=, >, >= |
==, != |
&, ^, | |
&&, || |
=, +=, -=, *=, /=, %= |
예시1
int a = 3; int b = 4; int c = 5; int d = 6;
a*b+c>=d&&d/a-b!=0
계산 순서
식 답 a*b 12 d/a 2 a*b+c 17 d/a-b -2 a*b+c>=d 1 (True) d/a-b!=0 1(True) a*b+c>=d&&d/a-b!=0 1(True → 1 && 1 = 1) ∴ 1
d%b+ ++a*c--
계산 순서
식 답 a++ a = 4 d%b 2 a++*c 20 c-- c = 4 d%b+a++*c-- 20+2 = 22 ∴ 22
예시 2
#include<stdio.h> int main(){ int a = 5, b = 5; a *= 3+b++; printf("%d %d", a, b); return 0; } 1) 3+b => 8 2) b++ => b = 6 3) a*=8 => a = 40
∴ 40 6
3️⃣ 관계연산자
연산자 | 예시 | 결과값 |
---|---|---|
== | 10==9 | 0 (False) |
!= | 3 != 3 | 0 (False) |
> | 5 > 5 | 0 (False) |
>= | 5 >= 5 | 1 (True) |
< | 7 < 7 | 0 (False) |
<= | 7 <= 7 | 1 (True) |
4️⃣ 논리연산자
연산자 | 예시 | 결과값 |
---|---|---|
! (not) | !9 | 0 (False) |
&& (and) | 3 >= 3 && 3 > 3 | 0 (False) |
|| (or) | 5>5 || 5>=5 | 1 (True) |
예시
int a = 3+5, b = 1, c; int ap, bp; ap = a++; bp = ++b; b = 3*(ap==8); c = 5*(ap != 8); ∴ a = 9, ap = 8, bp = 2, b = 3, c = 0
5️⃣ 조건문
단순 if문
if(조건){ 조건이 만족할 때의 처리; }
if ~ else문
if(조건){ 조건이 만족할 때의 처리; } else { 조건이 만족하지 않을 때의 처리; }
다중 if문
if(조건1){ 조건1이 만족할 때의 처리; } else if(조건2){ 조건2가 만족할 때의 처리; } else{ 모든 조건이 만족하지 않을 때의 처리; }
예시
#include<stdio.h> int main() { int i = 3; int j = 4; if ((++i>j--)&&(i++<--j)) i = i-- + ++j; else j = i-- - --j; printf("%d\n", i); }
∴ 2