본문 바로가기
C 프로그래밍

독학으로 배우는 C언어 007 자료형과 연산 1

by 솔토지빈 2024. 6. 8.
반응형

독학으로 배우는 C언어 007 자료형과 연산 1

Contents

     

    1. 정수형

    정수형은 무려 15가지의 형태가 있다. 유사한 형태가 많으므로 프로그램할 때 가장 많이 사용하는 아래의 자료형만 알아두자.

     

    short, int, unsigned short, long, unsigned long

     

    많이 사용하는 다섯 가지 자료형 중에서 intunsigned short 형을 가장 많이 쓰인다.

     

    int 형 정도로 충분히 표현할 수 있는 수인데도 long 형 이상의 자료형을 사용하는 것은 메모리 낭비로 인하여 프로그램 실행속도만 떨어뜨리는 결과를 가져올 수 있으므로 적당한 자료형을 사용해야 한다.

     

    1) 정수형의 종류와 데이터의 허용범위

    정수형 바이트 수 음수 사용 데이터 허용범위 형식 지정자
    short 2 -32768 ~ 32767 %d
    unsigned short 2 0~65535 %u
    int 4 -2147483648 ~ 2147483647 %d
    unsigned int 4 0 ~ 4,294,967,295 %u
    long 4 -2147483648 ~ 2147483647 %ld
    unsigned long 4 0 ~ 4294967295 %lu
    long long 8 9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 %lld
    unsigned long long 8 0 ~ 18,446,744,073,709,551,615 %llu

     

    데이터는 허용범위 내의값만을 사용하도록 해야 한다. 만약 허용범위를 넘는 값을 사용하면 오버플로우가 발생하여 원치 않는 결과를 얻게 된다.

    C언어는 오버플로우가 발생하더라도 에러를 내지 않고 그대로 실행하므로 주의해야 한다.

    예를 들어 unsigned short 형에게는 음수인 -1 을 저장할 수 없다. 그 이유는 unsigned 형은 음수를 값으로 취할 수 없기 때문이다.

    하지만 C언어는 스스로 -1 65535 라는 값으로 자동 변환하여 대입해 버린다. 이로 인하여 예기치 않는 엉뚱한 결과를 얻게 되는 것이다.

     

    실습 1: 정수형 변수의 사용

    다음의 프로그램을 작성하여 ex008.c 저장하고 실행해 보자.

    #include <stdio.h>
    int main(void)
    {
    	unsigned short number;
    	number = -1;
    	printf("number 변수의 값은 %u입니다. \n", number);
    	return 0;
    }

     

    설명 : 행 설명

    4: number 변수를 unsigned short 형 변수로 사용하겠다고 선언했다.

    5: 부호가 없는 정수형 변수임에도 불구하고 음수인 1을 저장했다.

     

    의도하지 않은 결과 값이 출력되었는데도 오류처리가 되지 않는다.

    그만큼 변수의 형을 선언할 때는 주의해야 한다.

     

    2. 변수의 값 변경

    프로그램 안에서 변수의 값은 언제든지 바뀔 수 있다.

     

    실습 1: 변수 값 변경

    다음의 프로그램을 작성하여 ex009.c 저장하고 실행해 보자.

    #include <stdio.h>
    int main(void)
    {
    	int number;
    	number = 5;
    	printf("number 변수의 값은 %d입니다. \n", number);
    	number = 10;
    	printf("number 변수의 변경된 값은 %d 입니다. \n", number);
    	return 0;
    }

     

    설명 : 행 설명

    7: 프로그램이 순서대로 실행되면서 7행의 number = 10; 을 만나면 변수 number 값이 변경된다.

     

    3. 변수를 변수에 대입

    변수를 또 다른 변수에 대입시킬 수 있다.

     

    실습1: 변수 값 다른 변수로 저장

    다음의 프로그램을 작성하여 ex010.c 저장하고 실행해 보자.

    #include <stdio.h>
    int main(void)
    {
    	int num1, num2;
    	num1 = 3;
    	printf("num1 변수의 값은 %d \n", num1);
    	num2 = num1;
    	printf("num1 변수의 값을 num2 변수에 대입 \n");
    	printf("num2 변수의 값은 %d \n", num2);
    	return 0;
    }

     

    설명 : 행 설명

    7: 7행에서 num2 = num1;는 좌측과 우측에 변수들이 존재한다.

    ‘=’ 는 같다는 의미가 아니고 우측에 있는 변수 내용을 좌측의 변수로 대입하라는 것이다.

    변수 num1에는 3이라는 숫자가 저장되어 있다. 그러므로 num2 에는 3이라는 숫자가 대입된다.

     

    4. 정수형 변수에 소수 저장

    정수형 변수에 소수를 저장하면 정수만 저장된다.

     

    실습 1: 정수형 변수에 소수를 저장하면 정수

    다음의 프로그램을 작성하여 ex010.c 저장하고 실행해 보자.

    #include <stdio.h>
    int main(void)
    {
    	int number;
    	number = 3.14159;
    	printf("변수 number의 값은 %d \n", number);
    	return 0;
    }
    반응형

    댓글