-
[C] 자료형과 변수C 2023. 3. 1. 17:58
1. 프로그래밍 기초
한 프로젝트는 단 하난의 함수 main()과 다른 여러 함수로 구현되며, 최종적으로 프로젝트 이름으로 하나의 실행 파일이 만들어진다.
C 프로그래밍 소스의 구조
전처리 → 외부선언 → 함수 main() → 기타 함수구현
- 전처리 : 전처리 지시자
- #include <stdio.h>
- #define PI 3.14
- 외부선언 : 함수 및 자료형, 변수 선언
- typedef int my_int
- void funtion(int, double)
- 함수 main : 기본 함수인 main() 구현
- /*블록 주석*/
- //한 줄 주석
- 문장; 블록{}
- 함수호출()
- 기타 함수구현 : 필요 다른 함수 구현
- 지역변수 선언
- 매개변수 사용
C 프로그램은 적어도 main() 함수 하나는 구현되어야 응용 프로그램으로 실행될 수 있다.
main() 함수 : 프로그램이 실행되면 가장 먼저 시작되는 부분
예약어(reserved word) or 키워드 : 문법적으로 고유한 의미를 갖는 예약된 단어
ex) int, long, return, sizeof, void, double, else, while, char, const 등
식별자 : 프로그래머가 직접 정의해서 사용하는 단어 / 함수 이름, 변수 이름 등
- 숫자는 맨 앞에 올 수 없다.
- 대소문자는 구별된다.
- 중간에 공백문자(space)가 들어갈 수 없다.
- 키워드는 식별자로 사용할 수 없다.
- 알파벳과 _를 제외한 문자는 사용할 수 없다.
문장(statement) : 프로그래밍 언어에서 컴퓨터에게 내리는 최소 단위, 문장은 마지막에 세미콜론;으로 종료
- 프로그램 이해에 도움이 된다면 한 줄에 여러 문장의 입력도 가능하다.
블록(block) : 여러 개의 문장을 묶은 것, 중괄호(curly brace)로 열고 닫음
들여쓰기(indentation) : 블록 내부에서 문장들을 탭(tab) 키로 한 스텝만큼 오른쪽으로 들여 쓰는 소스 작성
주석(comment) : 일반 문장과 달리 프로그램 내용에는 전혀 영향을 미치지 않는 설명문
- 한줄 주석 : //
- 블록 주석 : /* ··· */ (중첩된 주석은 사용할 수 없다.)
2. 자료형과 변수선언
자료형(data type) : 프로그래밍 언어에서 자료를 식별하는 종류
변수(variables)
- 정수와 실수, 문자 등의 자료값으로 저장하는 저장 공간
- 변수에는 고유한 이름이 붙여지며, 물리적으로 기억장치인 메모리에 위치한다.
저장공간인 변수의 특징
- 변수는 자료형을 갖고, 선언된 자료형에 따라 변수의 저장공간 크기와 저장되는 자료값의 종류가 결정된다.
- 저장되는 값에 따라 변수값은 수정할 수 있으며
- 제일 마지막에 저장된 하나의 값만 저장 유지된다.
변수선언 : 컴파일러에게 프로그램에서 사용할 저장 공간인 변수를 알리는 역활, 프로그래머 자신에게도 선언한 변수를 사용하겠다는 약속의 의미가 있다.
- 변수는 관습적으로 소문자 사용
- 하나의 문장으로 세미콜론으로 종료
- 변수선언 이후에는 지정한 변수 이름으로 값을 저장하거나 값을 참조
변수 선언 위치
변수를 사용하기 전에만 변수를 선언
자료형을 이용한 변수선언 double height;
여러 변수를 하나의 문장으로 선언 int height; // 변수 height를 int 자료형으로 선언 int weight; int waist;
저장 값 대입 int age; → 변수선언문 : 메모리에 int 자료형을 저장할 수 있는 공간을 이름 age로 확보 age = 20; → 대입문 : 이름이 age인 저장공간에 자료값 정수 20을 저장하는 문장
변수 초기화
변수를 선언만 하고 자료값에 아무것도 저장하지 않으면
- 원치 않는 값이 저장되고 오류가 발생
- 변수를 선언한 이후에는 반드시 값을 저장
변수선언 이후 초기화 int year; year = 2023; _ 변수선언 및 초기화 int year = 2023;
3. 기본 자료형
- 기본 자료형 : 정수형, 실수형, 문자형, 무치형
- 유도 자료형 : 배열, 포인터, 함수
- 사용자 정의 자료형 : 열거형, 구조체, 공용체
- 정수형 : int, short, long
- 기본 키워드 int : 365, 1024, 030, 0xF3과 같이 10진수, 8진수, 16진수의 정수가 다양하게 저장
- short와 long : 정수형 int에서 파생된 자료형
- signed 자료형 : [부호가 있는]을 의미하는 signed 키워드는 정수형 자료형 키워드 앞에 표시, signed 키워드 생략 가능
- 음수, 0, 양수를 모두 지원
- signed int == int
- unsigned 자료형 : 부호가 없는 정수인 unsigned는 0과 양수만을 저장할 수 있는 정수 자료형, 자료형 unsigned int에서 int는 생략 가능
- 0과 양수만을 지원
- unsigned int == unsigned
정수형 저장공간
음수지원 여부 자료형 크기 부호가 있는 정수형
signedsigned short 2 byte signed int 4 byte signed long 4 byte 부호가 없는 정수형
unsignedunsigned short 2 byte unsigned int 4 byte unsigned long 4 byte * 1byte = 8bit
- 부동소수형 : float, double, long double
- double형은 float형보다 표현범위가 같거나 보다 정확
- long double형은 double형보다 표현범위가 같거나 보다 정확
부동소수형 저장공간
자료형 크기 정수의 유효자릿수 float 4 byte 6~7 double 8 byte 15~16 long double 8 byte 15~16 * 1byte = 8bit
- 문자형 : char, signed char, unsigned char
- 문자형 자료공간에 저장되는 값은 실제로 정수값이며, 이 정수는 아스키 코드 표에 의한 값이다.
- 키워드 signed와 unsigned를 함께 이용 가능
문자형의 표현범위
자료형 저장공간 크기 표현범위 char 1 byte -128에서 127까지 (문자는 실제 0에서 127까지 이용) signed char 1 byte -128에서 127까지 unsigned char 1 byte 0에서 127까지 - 아스키 코드(ASCII: American Standard Code for Information)
- (ASCII: American Standard Code for Information)에서 제정한 정보 교환용 표준 코드
- 총 127개의 문자로 구성
- 기본 자료형은 long long을 포함하면 모두 14가지
- 연산자 sizeof를 이용하면 자료형, 변수, 상수의 저장공간 크기를 byte 단위로 알 수 있다.
sizeof(char) // sizeof(자료형키워드), 괄호가 반드시 필요 sizeof 3.14 // sizeof 상수, sizeof(상수) 모두 가능 sizeof n // sizeof 변수, sizeof(변수) 모두 가능
- 오버플로(overflow) or 언더플로(underflow)가 발생
- 자료형의 범주에서 벗어난 값을 저장
4. 상수 표현방법
- 상수 : 이름 없이 있는 그대로 표현한 자료값이나 이름이 있으나 정해진 하나의 값만으로 사용되는 자료값
- 리터럴 상수 : 이름이 없이 소스에 그대로 표현해 의미가 전달되는 다양한 자료값
- 심볼릭 상수 : 리터럴 상수와 다르게 변수처럼 이름을 갖는 상수
- 심볼릭 상수 표현 방법 : const 상수(const constant), 매크로 상수(macro constant), 열거형 상수(enumeration constant)
- 상수의 종류
- 문자 상수
- 문자 하나의 앞 뒤에 작은따옴표(single quote)를 넣어 표현
- \ddd
- 세 자리까지의 8진수 코드 값 (ex : 문자 'A'는 '\141')
- 이스케이프 문자 : 역슬래쉬 \와 문자의 조합으로 표현하는 문자
ex) \n, \t, \, \a, \\ 등
- 심볼릭 const 상수
const : 변수선어 시 자료형 또는 변수 앞에 키워드 const가 놓이면 이 변수는 심볼릭 상수가 된다.
- 상수는 반드시 초기값을 저장해야 한다.
- 열거형 상수
enum : 정수형 상수 목록 집합을 정의하는 자료형
키워드 enum으로 열거형 정수상수 목록 만들기 enum DAY{SUN, MON, TUE, WED, THU, FRI, SAT}; 0 1 2 3 4 5 6 enum 열거형태그명 {열거형상수1, 열거형상수2, 열거형상수3, ··· }; 0 1 2 열거형상수 : 열거 상수 목록으로 순서대로 0, 1, 2 등으로 정의된다.
열거형 상수에서 목록 첫 상수의 기본값이 0이며 다음부터 1씩 증가하는 방식으로 상수값이 자동으로 부여된다.
매크로 상수
전처리기 지시자 #define : 상수를 정의하는 지시자
'C' 카테고리의 다른 글
[c] 조건 (0) 2023.03.29 [C] 연산자① (1) 2023.03.22 [C] 전처리와 입출력 (1) 2023.03.17 [C] QUIZ (0) 2023.03.15 [C] C 프로그래밍 첫걸음 (4) 2023.03.08 - 전처리 : 전처리 지시자