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 - 기타연산자

  1. sizeof() 연산자
  • 피연산자의 크기를 바이트 단위로 표기
  1. 콤마 연산자
  • 명령 단위의 기준이 됨
  • 연산식이 여러개인 경우 좌측부터 실행한후, 최종 연산 결과는 우측식으로 인식함

 

- 예 : 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