7월 1주차_C Study 2 . 수식자와 연산자

2023. 7. 9. 12:22language : p_study/c language

7월 1주차 학습 할 C언어 study 목차는 다음과 같다.

1. 변수와 자료형
2. 수식자와 연산자
3. 조건문
4. 반복문 

 

지난 단원과 이번단원은 암기와 약간의 활용만 할 수 있다면 어려움없이 공부할 수 있다고 생각한다.

내가 배운 개념이 어떻게 사용되는지를 이해하고 외워둔다면 그걸로 될 듯.

 

 

2. 수식자와 연산자

 

수식이란 피연산자들과 연산자의 조합이라고 할 수 있다.

연산자는 연산을 나타내는 기호이다.

종류를 알아보자.

연산자의 분류 연산자 의미
대입 = 오른쪽을 왼쪽에 대입
산술 + - * / % 사친연산과 나머지 연산
부호 + - 양수와 음수 표시
증감 ++ -- 증가, 감소연산
관계 > < == != >= <= 오른쪽과 왼쪽을 비교
논리 && || ! 논리적인 AND, OR
조건 ? 조건에 따라 선택
콤마 , 피연산자들을 순차적으로 실행
비트 단위 연산자 & | ^ ~ << >> 비트별AND,OR,XOR,이동,반전
sizeof 연산자 sizeof 자료형이나 변수의 크기를 바이트 단위로 반환
형변환 (type) 변수나 상수의 자료형을 변환
포인터 연산자 * & [] 주소계산, 포인터가 가리키는 곳의 내용 추출
구조체 연산자 . -> 구조체의 멤버참조
 
피연산자    연산자    피연산자 =    식의  값

피연산자의 수에 따라서 단항, 이항, 삼항 연산자로 나뉘어진다.

 

 

산술 연산자란 기본적인 산술 연산인 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 실행하는 연산자이다.

연산자 기호 사용 예시 결과값
덧셈 + 7+4 11
뺄셈 - 7-4 3
곱셈 * 7*4 28
나눗셈 / 7/4 1
나머지 % 7%4 3
나눗셈은 몫, 나머지는 몫을 제외한 나머지를 가리킨다.

 

➡정수와 정수끼리의 나눗셈
    7  /  4   =  1

➡실수와 실수끼리의 나눗셈
    7 . 0  /  4 . 0 = 1 . 75

 

 증감 연산자

 

증감 연산자는 ++기호나 --기호를 사용하여 변수의 값을 1만큼 증가시키거나 감소시키는 연산자이다.

 

✅증감연산자
    x ++
    x = x + 1 ;

감소연산자
    x --
    x = x - 1;

증감 연산자의 종류를 알아보자.

증감 연산자 차이점
++x 수식의 값은 증가된 x값이다.
x++ 수식의 값은 증가되지 않은 원래의 x값이다.
--x 수식의 값은 감소된 x값이다.
x-- 수식의 값은 감소되지 않은 원래의 x값이다.
x = 1;
y = 1;

num1 = ++ x ; // x의 값이 증가된 후에 사용됨, num1값은 2가된다.
num 2= ++ y ; // y의 값이 증가된 후에 사용됨, num2값은 2가된다.

✔ 아래와 같이 출력되도록 자동판매기 프로그램을 만들어보자.

투입한 돈 : 1000 
물건값 : 270 
거스름돈 : 730 

100원 동전의 개수 : 7 개
10원 동전의 개수 : 3 개

 

 

 대입 연산자

 

대입 연산자는 변수에 값을 저장하기 위하여 사용하는 연산자이다.

대입 연산자는 할당 연산자, 배정 연산자라고도 한다.

보통의 = 과는 다르게  c언어에서는 오른쪽에 있는 수식의 값을 계산한 후 왼쪽의 변수에 저장한다고 생각하면 된다.

변수 = 수식
   x  =  10

 

 복합 대입 연산자

 

복합 대입 연산자란 += 처럼 대입 연산자 =와 산술 연산자를 합쳐 놓은 연산자이다.

복합 대입 연산자에 대해 알아보자.

복합 대입 연산자 의미
x+=y x=x+y
x-=y x=x-y
x*=y x=x*y
x/=y x=x/y
x%=y x=x%y
 

  관계 연산자

 

연산 의미
x == y xy가 같은가?
x != y xy가 다른가?
x > y xy보다 큰가?
x < y xy보다 작은가?
x >= y xy보다 크거나 같은가?
x <= y xy보다 작거나 같은가?
 

✔  비트 연산자

 

비트 연산자는 AND연산이나 OR연산을 하는 연산자이다.

비트 연산자 종류는 다음과 같다.

연산자 연산자의 의미 설명
& 비트 AND 두 개의 피연산자의 해당 비트가 모두 1이면 1, 아니면 0
| 비트 OR 두 개의 피연산자의 해당 비트중 하나만 1이면 1, 아니면 0
^ 비트 XOR 두 개의 피연산자의 해당 비트의 값이 같으면 0, 아니면 1
<< 왼쪽으로 이동 지정된 개수만큼 모든 비트를 왼쪽으로 이동한다.
<< 오른쪽으로 이동 지정된 개수만큼 모든 비트를 오른쪽으로 이동한다.
~ 비트 NOT 01로 만들고 10로 만든다.
더보기

비트연산자는 추가 공부 자료를 더 넣어보겠다.

 

✔  비트 이동 연산자 ( << ,>> )

 

비트 이동 연산자는 비트들을 왼쪽으로 한번 이동할 때마다 값은 두배가 된다.

비트 이동 연산자의 종류에 대해 알아보자.

 

연산자 기호 설명
왼쪽 비트 이동 << x << y x의 비트들을 y칸만큼 왼쪽으로 이동
오른쪽 비트 이동 >> x >> y x의 비트들을 y칸만큼 오른쪽으로 이동

 

 

✔  연산자의 우선순위

 

C언어 연산자의 우선순위와 결합 방향 : 네이버 블로그 (naver.com)

 

✔  형변환

  • 형변환(type casting)이란 데이터의 타입을 변환시키는 처리과정이다.
  • 예를들어 int 형을 double형으로 변환할 수 있다.
  • 형변환은 자동적인 형변환과 명시적인 형변환 두가지가 있다.

☑ 자동적인 형변환

 

대입 연산 시에 형변환이 자동으로 발생할 수 있다.
예를들어 대입 연산자의 오른쪽에 있는 값은 왼쪽에 있는 변수의 자료형으로 자동적으로 변환된다.
정수형 int가 실수형 double형으로 변환되면 올림 변환이라고 한다.( 더높은 등급으로의 변환)
반면, 더 낮은 등급으로 자료형이 변환되는 내림 변환도 발생할 수 있다.
이런 경우 데이터 손실이라는 문제가 발생할 수 있다.

 

명시적인 형변환

형식 :  (자료형) 수식
             (int) 1.23456 //상수
           (double) x //변수
             (long)(x+1) //수식
 
 

✅ mini project

사용자로부터 2개의 정수를 입력받아서 첫 번째 정수를 두 번째 정수로 나누었을

때의 몫과 나머지를 계산하는 프로그램을 작성하라.”

예시) 
첫 번째 정수를 입력하시오
: 10
두 번째 정수를 입력하시오 
: 3
몫은 3이고 나머지는 1입니다.

 

코드

문제 풀이)

  • int를 통해 정수형 변수를 입력받을 정수 2개와 몫과 나머지 결과를 받을 2개의 변수를 각각 선언해준다.
  • printf를 통해 정수를 입력받는 부분을 명시하고, scanf로 입력받는다.
  • result1,2를 통해 몫과 나머지를 대입연산하여 결과값을 받는다.
  • printf를 통해 몫과 나머지를 나타낸다.
 

콘솔창

 

 

사실 공부하면서 책에 있는 내용을 쭉 훑어보고 추가로 공부할 내용이 있다면 추가해서 넣으려고 했는데 이번 단원까지는 사실상 간단한 개념들과 활용을 준비하는 단계라 추가할 내용이 있지는 않을 것 같다.