1 |
primary |
( ) |
[ ] |
. |
-> |
|
|
|
오른쪽 |
2 |
단항 |
* |
& |
! |
++ |
-- |
(datatype) |
sizeof |
왼쪽 |
3 |
승법 |
* |
% |
/ |
|
|
|
|
오른쪽 |
4 |
가법 |
+ |
- |
|
|
|
|
|
오른쪽 |
5 |
관계 |
< |
> |
<= |
>= |
|
|
|
오른쪽 |
6 |
등가 |
== |
!= |
|
|
|
|
|
오른쪽 |
7 |
논리곱 |
&& |
|
|
|
|
|
|
오른쪽 |
8 |
논리합 |
|| |
|
|
|
|
|
|
오른쪽 |
9 |
대입 |
= |
+= |
-= |
*= |
%= |
/= |
|
왼쪽 |
관계 연산자
#include <stdio.h>
int main()
{
int a = 6;
int b = 4;
printf("%d \n",a < b); //a 가 b 보다 작은가
printf("%d \n",a <= b);//a 가 b 보다 작거나 같은가
printf("%d \n",a > b); //a 가 b 보다 큰가
printf("%d \n",a >= b);//a 가 b 보다 크거나 같은가
printf("%d \n",a == b);//a 와 b 가 같은가
printf("%d \n",a != b);//a 와 b 가 다른가
return 0;
}
C언어에서 참과 거짓을 나타내는 것은
0은 거짓
보통은 1이 참으로 알고 계시지만 0 이외의 수는 참으로 판단을 합니다.
이 관계연산자의 기준이 되는 것은 앞에 위치한 것이 됩니다.
주의사항은 <= 를 =< 이렇게 쓸 수 없으며
< = 이렇게 중간을 띄워서도 쓸 수 없습니다.
같다는 조건이 뒤에 간다는 것을 기억하시면 되겠습니다.
그러면 위의 내용은 맞으면 참이 나오고 틀리면 거짓이 출력되겠죠
차례대로 보면
0
0
1
1
0
1
이렇게 나오게 됩니다.
논리 연산자
#include <stdio.h>
int main()
{
int a = 0;
int b = 1;
int c = -1;
printf("%d \n",a || b); //논리합
printf("%d \n",b || c);
printf("%d \n",a && b); //논리곱
printf("%d \n",b && c);
printf("%d \n",!a); //부정(반대)
printf("%d \n",!b);
return 0;
}
논리 연산자부터 확인해보겠습니다.
|| (or) - 둘 중에 하나라도 참이면 참
&& (and) - 두 개 참일 때 참
! (not) - 참이면 거짓 / 거짓이면 참
일단 위에서 설명했듯 0이면 거짓
0이 아닌 모든 수는 참이라고 했었습니다.
이것을 전제로 위의 소스를 확인해봅시다.
a는 거짓
b는 참
c도 참입니다.
그래서 차례대로 보면
1
1
0
1
1
0
이렇게 출력이 됩니다.
대입 연산자
#include <stdio.h>
int main()
{
int a = 4;
int result1 = 0;
int result2 = 0;
int result3 = 0;
result1 += a;
result2 = result2 + a;
result3 -= a;
printf("result1 : %d\n",result1);
printf("result1 : %d\n",result2);
printf("result1 : %d\n",result3);
return 0;
}
result1 = result1 + a; 이 소스 코드와 result1 += a; 이 소스 코드는 동일합니다.
그러면 두 번째 result2 = result2 +a; 이 코드를 result2 +=a; 이렇게 하면 똑같아집니다.
그 아래 코드도 마찬가지입니다.
그러면
result1에는 4
result2에는 4
result3에는 -4
가 됩니다.
문제
#include <stdio.h>
int main()
{
int x = 1;
int y = 2;
int z = 4;
printf("%d\n",x || y && z);
printf("%d\n",x > y || z == y && x < z);
printf("%d\n",x != y && y +1 == !z + 4);
printf("%d\n",y -1 == 3 || y + 1 == 3);
return 0;
}
#include <stdio.h>
int main()
{
int i,j,k;
i=j=k=3;
printf("%d\n",k %= i);
printf("%d\n",i += j);
printf("%d\n",k = (i / 2) + (j / 2));
printf("i:%d j:%d k:%d\n",i,j,k);
return 0;
}
결과가 어떻게 나오는 것보다
어떤 순서가 먼저 연산이 되는지 확인해보시기 바랍니다.
위의 연산자 우선 순위표를 보시면 됩니다.
'컴퓨터 프로그래밍 > C' 카테고리의 다른 글
C언어 제어문 (if / if else / else if) (0) | 2019.07.18 |
---|---|
C언어 증감 연산자 / 캐스팅 연산자 / sizeof 연산자 (0) | 2019.07.18 |
C언어 연산자 우선순위 (0) | 2019.07.18 |
C언어 표준 입력 함수 get / scanf (0) | 2019.07.18 |
C언어 표준 출력 함수/서식 문자 (0) | 2019.07.18 |