다양한 분야의 문제를 해결하기 위해서, 프로그램이 다양한 유형의 데이터를 다룰 수 있어야 한다.
C 언어는 기본데이터 타입으로 정수, 부동소수점 수, 문자를 제공한다.또한 C 언어는 스트링 데이터 타입
을 제공하지는 않지만, 프로그램에서 빈번히 사용되는 데이터이기때문에 스트링 데이터를 지원하고 있다.


 

1. 정수

수학에서 정수는 0자연수, 그리고 자연수의 음수로 정의된다.
수학에서의 정수가 C 언어에서의 정수이다.
간단하게,
정수(integer numbers)는 영이나 소수점이 없는 양수 또는 음수이다.

다음은 올바른 정수 값의 예를 보여준다.

 

         0       7      -15      +35      999      -12345     ....      

수학에서는 정수의 최대값과 최소값이 존재하지 않지만, 컴퓨터에서는 정수를 표현하는 기억공간의 크기
따라서 그 범위가 제한된다.


컴퓨터에서 기억공간의 크기는 주로 바이트 단위로 표현된다.
바이트(byte)는 관련된 8개의 비트들로 구성된다.
비트(bit)는 0이나 1의 두 가지 정보를 표현할 수 있는 최소의 정보 표현 단위이다.
정수가 한 바이트에 표현될 경우에 그 값의 범위는 이다.
즉 최대값은 127이고, 최소값은 -128이다.

정수의
최대값 최소값이 어떻게 계산되는지 간단하게 살펴보자.

다음은 한 바이트상에 최대로 표현할 수 있는 비트 형태를 보여준다.

 

     0 1 1 1 1 1 1 1

가장 왼쪽에 위치한 비트는 부호(sign) 비트라 하며, 그 값이 0 이면 양수를 나타내고, 1 이면 음수를 나타낸다.

 

따라서 부호 비트가 0이고 나머지 비트가 1인 경우가 최대값을 나타낸다
위의 비트 형태는 2진수를 표현하고 있다. 이것은 10진수 값으로 다음과 같이 계산된다.


         - 1

이제 최소값을 생각해보자. 8비트 상에 2진수의 최소값은 다음과 같이 표현된다.

       


위의 2진수를 10진수 값으로 표현하면 이다.

대부분 컴퓨터에서 음수는2의 보수 표기법(2's complement notation)으로 표현된다는 것을 유의하라.

같은 방법으로,
2 바이트(byte)상에 표현될 수 있는 정수의 범위는 이고,
4 바이트(byte)상에 표현될 수 있는 정수의 범위는 이다.

C 언어에서 정수 데이터 타입은 int로 명시된다.
int 타입의 정수가 표현되는 기억공간의 크기는 컴퓨터에 따라서 다르나,
통상적으로 2 바이트(byte)나 4 바이트(byte)이다.


컴퓨터에서 int 정수 값의 크기를 알아보기 위해서 사용자 매뉴얼을 참조하거나,
나중에 다룰
sizeof 연산자를 이용할 수 있다.

int 타입의 정수가 표현할 수 있는 값의 범위보다 큰 값이 요구될 때도 있다.
가령, int 정수가 두 바이트 상에 표현될 때, 그 최대 값인 32,767보다 큰 값을 어떻게 처리할 수 있는가?
이러한 상황은 실제적인 응용에서 충분히 발생할 수 있다

C 언어는 큰 정수값을 저장할 수 있는 데이터 타입을 제공한다.
이 데이터 타입은 long으로 명시된다.
통상적으로, long 타입의 정수는 4 바이트(byte) 기억공간에 저장된다.
따라서 int 타입의 정수가 2 바이트(byte) 기억공간에 저장될 경우에, 약 65배 이상의 큰 정수를 표현할 수 있다.

C 언어에서 long 타입의 정수는 그 끝에 l이나 L이 붙는다. 다음은 long 타입 정수의 예이다.

 

 

       37L      45678l       


다음 애플릿을 통해서 정수에 관하여 실습한다.
여러분이 수를 입력하면, 애플릿은 그 수가 올바른 정수인지를 판단한다.


 

2. 부동소수점 수

많은 프로그램이 소수점을 갖는 수를 사용한다.
부동소수점 수(floating point numbers)는 소수점을 가진 수로서, 보통 실수(real number)라고 부른다.

다음은 부동소수점 수의 예이다.

 

       45.7      1.      3.14159      -0.001      +7.5      0.0      2.0

이 외에도 부동소수점 수는 지수 표기법을 사용하여 표현될 수 있다.
이 방법은 주로 매우 큰 수나 절대값이 매우 작은 수를 표현하는데 적합하다.

다음은 지수 표기법으로 표현된 부동소수점 수이다.

 

       1.234567e5      1.234567e-3      0e0      333.777E-22      3.456e+3

지수 표기 부분에서 e5, e+5, E5는 모두 동일한 표현이다.

다음은 지수 표기법으로 표현된 부동소수점 수의 수학적 의미를 설명한다.

 

     지수표기법

       수학표기법

 

     1.234567e5

   

 

     1.234567e-3


C 언어는 두 가지의 부동소수점 타입을 제공한다 : float double.

두 타입의 차이점은 부동소수점을 표현하는 기억공간의 크기가 다르며, 따라서 허용되는 값의 범위가 다르다.
일반적으로, double 타입은 float 타입 보다 두 배의 기억공간을 가지고 있으며,
따라서 double 타입이 float 타입보다 약 두 배 정도로 부동소수점 수를 정밀하게 표현할 수 있다.

 

대부분의 컴퓨터에서 float수는 4 바이트(byte) 기억공간에 저장되고, double8 바이트(byte) 기억공간에 저장된다.
float 수는 그 수 뒤에
fF가 붙으나, double 수는 아무것도 붙지 않는다.따라서 1.234F는 float 수이고 1.234는 double 수이다.

다음 애플릿을 통해서 부동소수점 수에 관하여 실습한다.
여러분이 수를 입력하면, 애플릿은 그 수가 올바른 부동소수점 수인지를 판단한다.

 

3. 문자

C 언어는 프로그램에서 사용할 수 있는 다양한 문자들을 제공한다. 다음은 C 언어가 제공하는 문자들이다.

 

  소문자
  대문자
  숫자
  특수 문자
  공백형 문자

   a b c .. z
   A B C ... Z
   0 1 2 3 4 5 6 7 8 9
   + - * / = ( ) { } [ ] < > ' '' ! # % & _ | ^ ~ \ . , ; : ? $ 등
   빈칸, 개행, 탭 등


C 프로그램에서는 한 개의 문자를
작은따옴표로 둘러싸여 표현할 수 있다.
이러한 문자를
문자 상수라 한다.

다음은 문자 상수의 예이다.

 

       'A'      'a'      '9'      '$'      '?'       

C 언어는 문자들은 ASCII(American Standard Code for Information Interchange)나 EBCDIC(Extended Binary Coded Decimal Interchange Code)의 코드 체계에 따라 컴퓨터의 기억공간에 저장된다.

ASCII(아스키로 발음)는 문자를 한 개의 바이트에 표현한다.

따라서 ASCII는 128개까지의 문자 코드를 제공한다. 다음은 몇 개의 문자에 대한 ASCII 코드를 보여준다.

     문자

        ASCII 코드

     문자

        ASCII 코드

      A
      B
      Z
      0
      9

       01000001
       01000010
       01011010
       00110000
       00111001

      a
      b
      z
      &
      *

       01100001
       01100010
       01111010
       00100110
       00101010

 

 

 4. 스트링 상수

C 언어에서 스트링 상수여러 개의 문자가 큰따옴표로 둘러싸여 표현된다. 다음은 스트링 상수의 예이다.

 

 

      "Hello, world.\n"

위의 스트링 상수에는 대문자, 소문자, 빈칸, 특수 문자 등이 포함되어 있음을 알 수 있다.
다음은 다른 스트링 상수의 예이다.

 

        "abc"        ""         "a"          "a = b - c;"

'a'와 "a"는 다른 데이터임을 유의하라. 'a'는 문자 상수이고 "a"는 스트링 상수이다.

 

 

5. C 언어의 데이터 타입

데이터 타입은 값들의 집합과 그 값들에 대해서 수행될 수 있는 연산들로 정의된다.

가령, int 정수 데이터 타입은 4바이트 상에 표현될 경우,
값들의 집합은 {
, ... , 0 , ... , , }이고,
이러한 값들에 대한 가능한 연산으로는 산술 사칙연산 등을 생각할 수 있겠다.

연산에 관해서는 뒤에서 다룰 것이다.


다음은 앞서 다룬 다양한 데이터들을 프로그램에서 다룰 수 있도록, C 언어에서 상응한 데이터 타입을 제공한다.

   

   데이터 타입

     값들의 집합

 

      int
      long
     
 float
      double
      char

     int 정수
     long 정수
     float 부동소수점 수
     double 부동소수점 수
     문자 값


이 외에도 C 언어는 다른 데이터 타입을 제공하고 있으나, 이것들에 대해서는 나중에 설명한다.

top으로... 다음페이지로.. 이전페이지로.. home으로..