C언어/참고서: C언어 콘서트

C언어 12차시 수식과 연산자, 산술연산자, 증감연산자

Olivia-BlackCherry 2023. 3. 21. 20:10

목차

    1. 수식 expression

    피연산자들과 연산자의 조합
    연산자 operator: 연산을 나타내는 기호(*)
    피연산자 operand: 연산의 대상이 되는 것( 5, 8)

    출처: C언어 콘서트

     
     

    2. 연산자

    C는 다양한 종류의 연산자를 제공한다. 제공하는 연산자가 많다는 것은 그만큼 데이터를 가공할 수 있는 범위가 넓다는 뜻이다. 이런 연산자들을 자유자재로 쓴다면, 복잡한 연산을 간단하게 처리할 수 있다. 
    마치, 가구를 만드는 장인이 다양한 도구와 방법을 활용해 여러 가구를 뚝딱뚝딱 만드는 것과 같다. 

    출처: C언어 콘서트

     
     

    2-1. 산술연산자

    +, -, *, /, % 

    덧셈 뺄셈, 곱셈, 나눗셈, 나머지와 관련된 연산자이다. 
     
    ※ 주의점
    사람에게 9/5를 계산하라고 하면 금방 1.8이라고 대답한다. 
    그런데 컴퓨터는 1이라고 대답한다. 
    왜냐하면, 피연산자가 모두 정수이기 때문에 결과도 정수로 나오기 때문이다. 
    즉 컴퓨터에서 정수 계산과 실수 계산은 완전히 다르다. 
    정수끼리 연산은 정수 하드웨어를, 실수끼리 연산은 실수 하드웨어를 쓰기 때문이다.
    따라서 나눗셈에서는 피연산자 데이터형식을 더욱 신경써야 한다! 
     
     

    2-2 증감연산자

    ++, --

    변수의 값을 1만큼 증가 또는 감소 시키는 연산자이다. 
    아래와 같이 쓸 수도 있다.

    x++;
    x = x+1;

    x--;
    x = x-1;

     
    ※ 주의점
    순서를 유의해야 한다. 

    증감 연산자 값에 대한 해석
    ++x 증가된 x
    x++ 원래의 x(증가 안됨)
    --x 감소된 x
    x-- 원래의 x(감소 안됨)
    x= 1;
    y= 2;
    nextx_1 = ++x; // x의 값이 증가된 후에 사용, nextx_1=2, x=2
    nextx_2 = x++; // 원래 x의 값을 사용, 이후에 x값 증가, nextx_2=2, x=3
    nexty = y++; //원래 y값을 사용, 이후에 y값 증가, nexty=2, y=3
    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
    	int x;
    	x = 10;
    	printf("%d\n", x++);  //10
    	printf("%d\n", x);  //11
    	printf("%d\n", ++x); //12
    	printf("%d\n", x);  /12
    	return 0;
    }


     

    3. 연습문제

    3-1. 근무일수를 입력받아, 0월, 0주, 0일을 일했는지 계산하기

    <결과>

    <코드>

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
    	int work_days, year, month, week, day;
    	const int YEAR = 365;
    	const int WEEK = 7;
    
    	printf("근무 일수를 입력해주세요: ");
    	scanf("%d", &work_days);
    
    	year = work_days / YEAR;
    	week = work_days % YEAR / WEEK;
    	day = work_days % YEAR % WEEK;
    
    	printf("당신은 이 회사에 %d년 %d주 %d일 일하셨습니다.\n 고생하셨습니다. \n\n", year, week, day);
    
    	return 0;
    }

     
     

    3-2. 사용자로부터 돈과 물건 값을 입력받아, 잔돈 출력하는 자판기 만들기

    (금액은 자유롭게 설정)
    <결과>

    <코드>

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    int main(void)
    {
    	int money, price, change, change_1000, change_100, change_10;
    	const int TYPE1000 = 1000;
    	const int TYPE100 = 100;
    	const int TYPE10 = 10;
    
    	printf("물건 값은 얼마입니까:______\b\b\b\b\b");
    	scanf("%d", &price);
    	printf("얼마를 투입하시겠습니까:______\b\b\b\b\b");
    	scanf("%d", &money);
    
    	change = money - price;
    	change_1000 = change / 1000;
    	change_100 = change % 1000 / 100;
    	change_10 = change % 1000 % 100 /10;
    
    	printf("잔돈은 1000원짜리 %d개, 100원짜리 %d개, 10원짜리 %d개입니다", change_1000, change_100, change_10);
    
    	return 0;
    }