2023. 3. 20. 17:47ㆍ개발하는중/c
자료형과 선행 처리기
1. 상수와 변수
- 자료형
프로그램에서 사용하는 자료의 형태
상수와 변수로 구분
- 프로그램에서 자료(data) 처리를 위해서는 자료의 생성과 저장, 처리 과정이 필요
- C프로그램은 수많은 명령어와 자료들로 구성 ,이들 자료의 정확한 효율적인 활용이 필요
- C언어는 여러가지의 종류의 자료형(data type)을 지원하고 있음
- 상수
항상 고정된 값을 갖는 자료
값이 한번 정해지면 프로그램 도중 그 값을 변경할 수 없는수
l 정수형 상수
구분 | 예 | 비고 |
10진 상수 | 10, -10, 999 | 0~9까지의 숫자를 사용하며, 0으로 시작 할 수 없다. |
8진 상수 | 011, 055 | 0~7까지의 숫자를 사용하며, 숫자 앞에 0을 붙임 |
16진 상수 | 0xac,0X2A | 0~9과 A~F를 사용하며 숫자 앞에 0x, 0X를 붙임 |
Unsigned형 상수 | 12u, 067u, OXFAU | 부호 없는 상수를 표현하며, 숫자 뒤에 u, U를 붙임 |
Long형 상수 | 12345l, 0XFFL | 큰 길이의 정수를 표현하며, 숫자 귀에 l, L을 붙임 |
l 실수형 상수
부동소주점 형 상수
Double형을 기본 자료형 으로 사용
구분 | 예 | 비고 |
소수 형식 | 12.345 | 소수점을 사용하여 표현 |
지수 형식 | 12E3(=12000) 5e-2(=0.05) | 10진수와 e(E)를 사용 표현 |
Float형 상수 | 3.14f 3.14E-3F | 숫자 뒤에 f, F를 붙임 |
Long double형 상수 | 3.14l 3.14E-3L | 숫자 뒤에 l, L을 붙임 |
l 문자형 상수
단일 인용부호 ('’)로 묶여 있는 1개의 영문자라 숫자문자
내부적으로는 해당문자의 ASCII 코드값이 사용
예를 들어 ‘A’는 내부적으로 65(ASCII 코드값)가 사용됨
Escape문자 : 키보드에 나타자 있지 않은 문자
l 문자열 상수
이중 인용부호 (“ ")로 묶여 있는 복수개의 영문자나 숫자
기억공간에 보관될 때는 문자열 끝에 null문자 (\0) 추가
Ex) "korea” => korea\0
- 변수
변할 수 있는 값
프로그램에서 변수는 프로그램 실행도중 변할 수 있는 값이 저장되는 기억공간을 의미
Ex) i=10 , i는 변수명이고 10이란 값을 i의 변수에 기억공간에 저장
이러한 변수 속에 들어가는 값은 수시로 변경될 수 있다.
n 변수의 특징
u 모든 변수는 이름이 있다.(변수명)
u 모든 변수는 정해진 자료형이 있다.
u 모든 변수는 할당된 값을 갑는다.
n 변수명의 정의 규칙
u 모든 변수는 사용되기 전에 선언 되어야함
u 변수명은 반드시 영문자나 _로 시작해야함
u 변수명은 중간에 숫자, _로 명명 할 수 있다.
u 변수명은 중간에 _이외에 특수문자($, #, ? 등)를 섞어서 명명할 수 없다.
u 변수명은 대, 소문자를 구별하여 사용한다.
u 변수명은 예약어들을 사용할 수 없다.
Ex) 변수 사용의 예
2. 자료형과 변수 선언
- 변수
n 자료를 저장할 기억공간을 확보하고 이 공간에 이름을 붙여 준 것
- 변수 선언
n 확보된 기억공간에 이름을 부여하는 것
- 이러한 변수 선언을 위해 자료형이 필요
- 자료형의 종류
n 기본형
u 정수형(int, short, long, unsigned)
l 운영체제에 따라 표현범위가 다름
u 실수형(floar, double, long double)
l 기본형은 double
u 문자형(char, unsigned char)
l ASCII코드를 사용하여 처리
l -128 ~ 127 까지의 값을 표현
u 열거형(enum)
l 숫자 대신 단어를 사용
l 형식 enum태그명 {열거자1, 열거자2, ....|
Ex) enum day {SUN, MON, TUE, WED, THU, FRI, SAT}
u 형없음(void)
n 확장형
u 배열형, 함수형, 포인터형, 구조체형
- 변수 선언
n 변수명과 변수가 가질 자료형을 지정하여 변수를 위한 기억공간을 할당 하는 것
n 형식 == 자료형 변수명;
Ex) 정수 -> int 변수명;
짧은 정수 -> short int 변수명;
긴 정수 -> long int 변수명;
실수 -> double 변수명;
문자 -> char 변수명;
문자열 ->char 변수명[문자수 +1];
n 변수 선언시 고려 사항
u 변수에 저장 될 값의 크기(범위)
l
u 변수의 선언 위치
l 전역 변수, 지역 변수
u 변수의 초기화
l
3. 선행 처리기
- 선행처리기(preprocessor)
n 컴파일에 앞서 프로그램 선두에 선언된 지시자들을 미리 처리하는 역할을 수행
- 선행처리기의 종류
n
- 선행처리기를 사용할 때 주의 할 점
n 반드시 #으로 시작해야함
n 명령문 끝에는 세미콜론;을 붙이지 않음
n 한 줄에 하나의 명령만 쓴다
n 소스 프로그램의 첫 부분에 위치
- #include
n #include는 C언어에서 제공되는 헤더파일(*.h)를 자신의 소스파일에 읽어 들여 함께 컴파일 하고자 할 때 사용
n C 프로그램에서 표준함수인 printf( ), scanf( ) 등을 사용하려면 이 함수들의 원형(prototype)이 선언되어 있는 표준 입출력 헤더파일인 stdio.h를 #include시켜야 함
u 형식 : #include <파일명>,#include "파일명"
u 사용 예 : #include <stdio.h> #include "stdio.h", #include "\tc\lib\math.h"
u 기능 : #include 다음에 제시된 파일을 현재 프로그램에 포함시킨다.
l <파일명>은 표준 디렉토리(보통 include 디렉토리)에서 파일을 찾아 포함
l "파일명"은 현재 사용 중인 디렉토리나 지정된 디렉토리에서 파일을 찾아 포함하며, 또는 드라이브나 경로를 사용
- #define
n #define는 매크로 정의 시 사용
u 매크로(macro)
l 선행 처리기 #define을 사용하여 단순 치환되는 자료
l 프로그램 작성 시에 명령이나 수식 또는 상수 값이 자주 사용될 때 이들을 대표하는 이름을 붙여 사용하는 대상
u 형식: #define 매크로명 자료, #undef 매크로명
u 사용 예: #define PI 3.141592
l 이는 프로그램 내의 PI는 3.141592로 치환하라는 것
u 기능 : 프로그램 상에 나오는 매크로명을 지정한 자료로 치환 후 컴파일하거나(#define), 정의를 해제(#undef)한다.
n 매크로 함수 정의
u 형식 : #define 매크로명(인수) (수식), #define 매크로명(인수, 인수) (수식)
u 사용 예 : #define AREA(x) (3.141592*(x)*(x)), #define HAP(a, b) (a+b)
u 장점
l 선행처리기에 의한 단순 치환 방식이므로, 전달 인자의 자료형을 명시할 필요가 없고, 또 어떠한 자료형 변수를 인자로 전달해도 잘 동작한다.
l 한 두 줄의 코드인 경우 함수로 정의하는 것보다 속도가 빠르다.
- 조건부 컴파일 선행처리기
n #if #else #elif #endif
u 조건에 따라 프로그램을 컴파일 하는 명령
u 최적의 코드로 프로그램을 작성할 수 있기 때문에 시스템의 성능 향상
n #if 와 #elif다음에는 컴파일 여부를 결정하는 조건문
u 조건문은 선행처리 과정에서 진위 여부를 판단할 수 있어야함
u 변수 지정이나 함수 호출 불가
u 주로 매크로 값이 사용
'개발하는중 > c' 카테고리의 다른 글
연산자 (0) | 2023.04.03 |
---|---|
표준 입출력 함수 (0) | 2023.04.03 |
c언어 개요 (0) | 2023.03.17 |
c언어_연산자의 이해 (0) | 2021.05.18 |
c언어_표준 입력 함수 scanf()의 이해 (0) | 2021.02.04 |