연산자가 궁금하시다면
https://accompani-i.tistory.com/185
먼저 학습 하고 오시길 권해드립니다.
산술 연산자의 종류
우선순위 | 예 | 종류 |
높음 낮음 |
() | 괄호 연산자 |
++, --, ~, ! | 단항 연산자 | |
*, /, % | 산술 연산자 | |
+, - | 산술 연산자 | |
<<, >> | 비트 연산자 | |
<, <=, >, >= | 비교 연산자 | |
==, != | 관계 연산자 | |
&, ^, | | 비트 연산자 | |
&&, || | 논리 연산자 | |
=, +=, -=, *=, /=, %= | 대입 연산자 |
연산자 우선순위 예시
Q1
int a = 3;
int b = 4;
int c = 5;
int d = 6;
a*b+c>=d&&d/a-b!=0 =
해설
※ 편의상 연산자 우선순위로 괄호를 쳐서 식 수행
( ( ( (a*b)+c) >= d) && ( ( (d/a)-b) != 0) ) = 답
1. 연산자 우선순위가 가장 높은
a*b, d/a부터
3*4, 6/3
2. a*b+c, d/a-b
12+5, 2-4
3. 비교연산이 더 높으니까 a*b+c >= d/a-b
17>=6
참이니까 1
4. d/a-b != 0
-2 ≠ 0
같지 않으니까 참이므로 1
5. a*b+c>=d && d/a-b!=0
1 && 1
&&은 두개 다 참이여야 참
참 && 참이니까 참이므로 1
Q2.
int a = 3;
int b = 4;
int c = 5;
int d = 6;
d%b + ++a*c-- =
해설
※ 편의상 연산자 우선순위로 괄호를 쳐서 식 수행
((d%b) + (++a * c--) ) = 답
1. 연산자 우선순위는 ++a와 c--가 제일 높다
++a = 먼저 1 증가시키고 식 수행, c-- 식수행하고 1감소 시킨다
a를 3->4로 증가시키고 식 수행
2. %와 *가 그다음으로 우선순위가 높다
d%b, ++a*c--
6%4, 4*5
6%4는 나머지를 구하는 것이므로 2
4*5는 20
3. d%b + ++a*c--
2 + 20 이므로 답은 22
이후에 c--로 c가 5->4
결과값에는 영향 안미침
Q3
#include<stdio.h>
int main*() {
int a = 5, b = 5;
a*=3 + b++;
printf("%d %d", a, b);
return 0;
}
해설
※ 편의상 연산자 우선순위로 괄호를 쳐서 식 수행
( a *= (3 + b++) ) = 답
1. 연산자 우선순위가 가장 낮은 것은 *=인 대입연산자이므로
3+b++부터 진행 (b++는 증가 시키기 전에 식 먼저 수행)
3+5 = 8
2. 나머지 a*= (3+b++)진행
a* = 8
a=a*8
a=5*8 이므로 a값에 40
식을 수행했으니 b++해서 b값은 6
40, 6으로 출력됩니다.
'iOS > 정보처리기사' 카테고리의 다른 글
[정보처리기사] C언어 - 출력 변환 기호(%d, %f, %c, %s, %x, %o, 16진수, 8진수 변환) (0) | 2022.05.24 |
---|---|
[정보처리기사] C언어 - 관계연산자/논리연산자, 조건문 (0) | 2022.05.23 |
[정보처리기사] C언어 - 산술연산자(a++, ++a, a+= 등) (0) | 2022.05.20 |
[정보처리기사] C언어 - 변수의 종류와 유효범위(지역변수, 전역변수, 정적변수, 동적변수) (0) | 2022.05.20 |
[정보처리기사] C언어 - 변수 (0) | 2022.05.18 |