c언어_연산자의 이해
2021. 5. 18. 10:27ㆍ개발하는중/c
728x90
반응형
C언어의 연산자
1.연산자의 이해
01 - 산술연산자
-> 두개의 피연산자 간의 산술 연산을 처리
산술 연산자 | 의 미 | 사용 예 |
+ | 두수의 합 | a + b |
- | 두수의 차 | a - b |
* | 두수의 곱 | a * b |
/ | 두수의 몫 | a / b |
%(모드연산자) | 나누기 나머지 | a % b |
- 모드(%) 연산자의 사용
-> 짝, 홀수 및 배수의 구분, 범위 설정 등
- 예 : 산술연산자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
void main()
{
int s1 = 20, s2 = 3;
printf(“%d + %d = %d \n”, s1,s2, s1 + s2); 출력 = 23
printf(“%d - %d = %d \n”, s1,s2, s1 - s2); 출력 = 17
printf(“%d * %d = %d \n”, s1,s2, s1 * s2); 출력 = 60
printf(“%d / %d = %d \n”, s1,s2, s1 / s2); 출력 = 6
printf(“%d %% %d = %d \n”, s1,s2, s1 % s2); 출력 = 2
}
|
cs |
02 - 관계연산자
-> 두 개 피연산자 간의 대소 관계의 비교를 처리
두 개 피연산자 간의 산술 연산을 처리 | ||
산술 연산자 | 의 미 | 사용 예 |
> | ..보다 크다. | a > 10 |
< | ..보다 작다. | a > 10 |
<= | ..보다 작거나 같다. | a <= 10 |
>= | ..보다 크거나 같다. | a >= 10 |
== | ..의 값과 같다. | a == 10 |
!= | ..의 값과 같지 않다 | a != 10 |
- 예 : 관계연산자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <stdio.h>
void main()
{
int s1 = 20, s2 = 3;
printf(“#.1 결과 : %d \n”, s1 <= s2); 출력 = 0
printf(“#.2 결과 : %d \n”, s1 >= s2); 출력 = 1
printf(“#.3 결과 : %d \n”, s1 == s2); 출력 = 0
printf(“#.4 결과 : %d \n”, s1 != s2); 출력 = 1
}
|
cs |
# true = (1), false = (0) 정수로 출력됨
03 - 대입연산자
-> 우측에 수행한 결과의 값을 좌측 지정된 변수에 저장
복합대입연산자 : 대입연산자와 다른 연산자의 복합 사용 | |||
구분 | 연산자 | 의미 | 사용 예 |
대입 연산자 |
= |
b의 값을 변수 a에 저장 |
a = b |
복합대입 연산자 |
+= | a = a + b | a += b |
-= | a = a - b | a -= b | |
*= | a = a * b | a *= b | |
/= | a = a / b | a /= b | |
%= | a = a % b | a %= b |
- 예 : 대입연산자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <stdio.h>
void main()
{
int s1, s2;
s1 = s2 = 5;
printf(“#.1 결과 : %d \n” s1 += 1);
# s1 = s1 + 1 이표현을 위에 표현으로
printf(“#.2 결과 : %d \n” s1 -= 1);
# s1 = s1 - 1
printf(“#.3 결과 : %d \n” s1 *= s2);
# s1 = s1 * s2
printf(“#.4 결과 : %d \n” s1 /= s2);
# s1 = s1 / s2
printf(“#.5 결과 : %d \n” s1 %= s2);
# s1 = s1 % s2
}
|
cs |
04 - 논리연산자
참과 거짓을 판별 | ||
논리 연산자 | 의미 | 사용 예 |
|| | 논리합(OR) | if(a>5 || a < -5).. |
&& | 논리곱(AND) | if(a>5 && a< -5).. |
! | 부정(NOT) | if(!(a%2 == 1)).. |
- 예 : 논리연산자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include <stdio.h>
void main()
}
int num;
printf(“국어 점수 입력(0~100점) :”);
scanf(“%d”, &num);
if(!( (num>=0 && (num<=100) ) )
printf(“잘못된 입력입니다. \n”);
else
printf(“입력된 점수 : %d \n”, num);
}
|
cs |
05 - 증감연산자
피연산자의 값을 1 증가 혹은 감소하여 다시 저장 | ||
논리 연산자 | 의 미 | 사용 예 |
++ | a = a + 1 | ++a / a++ |
-- | a = a - 1 | --a / a-- |
- 전치와 후치에 따른 연산자 비교
- 전치
-> ++a 또는 --a로 표기하며 지정된 기능을 처리
- 후치
-> a++ 또는 a--로 표기하며 지정된 기능을 처리
전치와 후치는 기본적인 기능을 동일하며, 다른 명령문과 병행된는 경우, 우선순위가 달라짐
- 예 : 증감 연산자 - 독립적인 연산 기능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <stdio.h>
void main()
{
int s1, s2;
s1 = 5; ++s1; = # s1 = s1 + 1;
s2 = 5; s2++; = # s2 = s2 + 1;
printf(“#.1 결과 : s1 = %d, s2 = %d”, s1, s2);
s1 = 5; --s1; = #s1 = s1 - 1;
s2 = 5; s2--; = #s2 = s2 - 1;
printf(“#.2 결과 : s1 = %d, s2 = %d”, s1, s2);
}
|
cs |
- 예 : 증감연산자 - 다른 명령문과의 병행
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include <stdio.h>
void main()
{
int s1, s2, s3, s4
s1 = 5; s2 = ++s1;
printf(“#.1 결과 : s1 = %d, s2 = %d”, s1, s2);
s3 = 5; s4 = s3++;
printf(“#.2 결과 : s3 = %d, s4 = %d”, s3, s4);
}
# 전치는 전치 먼저 처리하고 후치는 나중에 처리
|
cs |
06 - 조건 연산자
- 조건식 결과에 따라 명령 중 한 개를 선택하여 실행
- 결과가 참인 경우 : 콜론의 앞 명령을 실행
- 결과가 거짓인 경우 : 콜론의 뒷 명령을 실행
[형식]
조건식 ? 참일때의 명령문 : 거짓일 때의 명령문
- 예 : 조건연산자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include <stdio.h>
void main()
{
int s;
printf(“정수 입력 :”);
scanf(“%d”, &s);
s % 2 == 0 ?
printf(“%d 는 짝수 입니다. \n”, s)
: printf(“%d 는 홀수 입니다.\n”, s);
}
|
cs |
07- 비트연산자
2진수 데이터에 대한 각 비트의 논리/이동 연산을 처리 | |
비트 연산자 | 의 미 |
| | 비트 단위 논리합(OR) |
& | 비트 단위 논리곱(AND) |
^ | 비트 단위 배타적 논리합(XOR) |
~ | 비트 단위 부정(NOT) |
<< | 비트 좌측 이동 (Left Shift) |
>> | 비트 우측 이동 (Right Shift |
- 예 : 비트연산자 -비트 논리합
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include <stdio.h>
{
int s1 = 12, s2 = 7, res;
res = s1 | s2;
printf(“s1과 s2의 비트 논리합 결과 : %d \n”, res);
}
- 예 : 비트연산자 - 비트 부정
#include <stdio.h>
void main()
{
int s1 = 15, res;
res = ~s1;
printf(“s1의 비트 부정 결과 : %d \n”, res);
}
|
cs |
08 - 기타연산자
- sizeof() 연산자
- 피연산자의 크기를 바이트 단위로 표기
- 콤마 연산자
- 명령 단위의 기준이 됨
- 연산식이 여러개인 경우 좌측부터 실행한후, 최종 연산 결과는 우측식으로 인식함
- 예 : sizeof() 연산자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
void main()
{
int a=0, b=0, c=0;
printf(“변수 a의 공간 크기 : %d \n”, sizeof(a));
printf(“정수의 공간 크기 : %d \n”, sizeof(10));
printf(“int 자료형 공간 크기 : %d \n”, sizeof(int));
a = (b=3, c=5, b+c);
printf(“a= %d, b= %d, c= %d \n”, a, b, c);
}
|
cs |
09 - 연산자 우선순위
연산자 | 연산순서 | 우선순위 | 비고 |
(), [], ->, .(점) | 좌에서 우 | ↑ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ |
|
sizeof, (type), &, *, -(단항), +(단항), --, ++ ,~, ! | 좌에서 우 | 단항 | |
*(곱셈), /, %, +, / | 좌에서 우 | 단술 | |
<<, >> | 좌에서 우 | 비트 | |
<, <=, >, >=, ==, != | 좌에서 우 | 비교 | |
&, ^, | | 좌에서 우 | 비트 | |
&&, || | 좌에서 우 | 논리 | |
? : | 우에서 좌 | 삼항 | |
%=, /=, *=, -=, +=, = | 좌에서 우 | 대입 | |
, | 좌에서 우 | 콤마 |
728x90
'개발하는중 > c' 카테고리의 다른 글
자료형, 선행 처리기 (0) | 2023.03.20 |
---|---|
c언어 개요 (0) | 2023.03.17 |
c언어_표준 입력 함수 scanf()의 이해 (0) | 2021.02.04 |
c언어_상수의 이해 (0) | 2021.02.03 |
c언어 기본구조,표준 출력 함수 printf()의 이해 (0) | 2021.02.02 |