일시 : 2018.02.04 일
장소 : 답십리 도서관 13:00 ~ 14:30
내용 : C언어 콘서트 chap 3 변수와 자료형
//
변수(variable)
변수 : 데이터들이 일시적으로 저장되는 공간 (데이터를 담는 상자).
변수는 메모리(memory) 공간에 만들어짐.
변수는 프로그램 도중 값을 변경할 수 있지만, 상수는 값이 한 번 정해지면 변경이 불가하다
사용하기 전에 반드시 함수 시작 부분에서 미리 선언(declare) 해야 한다 -> declare를 하면 컴파일러는 변수의 자료형에 맞는 기억공간을 미리 확보. (미리 선언하지 않으면 컴파일 error)
변수 초기화(initialization) : 변수 선언과 동시에 대입 연산자(=)를 이용하여 값 정의
initialization 되지 않은 변수에는 쓰레기 값이 들어가게 됨.
자료형(data type, 데이터 타입)
자료형 | 바이트 수 |
---|---|
[정수형] (unsigned) short | 2 |
[정수형] (unsigned) int | 4 |
[정수형] (unsigned) long | 4 |
[문자형] char | 1 |
[부동소수점형] float | 4 |
[부동소수점형] double | 8 |
unsigned는 부호가 없는 자료형(양수만)으로 정수형에 붙을 수 있음.
=> 음수가 제외되어 같은 비트로 더 넓은 범위의 양수를 나타낼 수 있음
예를 들면 short형의 범위는 -32768 ~ 32767 이지만
unsigned short형의 범위는 0 ~ 65535까지의 정수를 나타낼 수 있음
sizeof 연산자 : 자료형의 크기를 알고 싶을 때 사용 -> 변수나 자료형의 크기를 바이트 단위로 반환
sizeof(x) //변수
sizeof(int) //자료형
정수형
short(16비트, 2바이트) <= int(32비트, 4바이트) <= long(32비트, 4바이트)
int형은 cpu가 한 번에 읽어 처리할 수 있는 비트의 크기과 관련. 최근 대부분의 컴퓨터는 32비트 cpu -> 일반적으로 int형은 32비트
short형은 -32768 ~ 32767 까지의 정수 표현 가능
int형과 long형은 -21억 ~ 21억까지의 정수 표현 가능
정수 상수
123L -> 정수123을 long형으로 간주하라.
8진법으로 나타내려면 앞에 0 , (8진법 출력 위한 형식지정자 %o)
16진법으로 나타내려면 앞에 0x (16진법 출력 위한 형식지정자 %x)
16진수 하나의 자릿수는 4비트에 해당.
기호 상수(symbolic constant)
기호로 상수를 표현한 것
프로그램 가독성 ↑
동일 상수를 여러 곳에서 사용할 경우 상수 값의 변경이 쉬움
#define문장 사용 -> 컴파일러 동작 전 전처리기가 처리
#define EXCHANGE_RATE 1120
const 키워드 사용 -> const가 붙은 변수는 초기화 후에 값 변경 x
const int EXCHANGE_RATE = 1120;
부동소수점형
float(32비트) <= double(64비트)
고정소수점(fixed-point) 방식은 소수점 위치를 고정시키고 정수 부분 일정 비트 할당, 소수 부분 일정 비트 할당하는 방식. -> 간단하지만 매우 큰 수 표현 불가
부동소수점(floating-point) 방식을 통해 더 넓은 범위의 실수를 표현함.
실수를 가수(1~10사이의 값)와 지수로 나누어서 표현
ex ) 1490000 = (가수) x (지수)
소수점 표기법 123.456 -> 지수 표기법 1.23456e2 (1.23456x)
0.000023 -> 2.3e-5 (2.3x)
부동소수점 상수는 기본적으로 double형으로 저장.
float형으로 만들려면 3.14F
오버플로와 언더플로
오버플로(overflow) : 변수가 나타낼 수 있는 범위를 넘는 숫자를 저장할 때 발생.
-> short형 최대값인 32767에 1를 더하면 다시 처음으로 돌아가 -32768이 됨
언더플로(underflow) : 부동소수점 수가 너무 작아서 표현하기 힘든 상황.
문자형
A는 65, a는 97
아스키(ASCII)코드 : 문자를 숫자로 나타내는 규격. 0~127까지의 숫자 이용.
C언어에서는 문자를 아스키코드 정수로 저장되기 때문에 문자를 아스키코드로 변환할 필요가 없다
문자뿐 아니라 작은 정수값도 저장 가능.(unsigned 수식어도 사용 가능)
제어문자
이스케이프 시퀀스(escape sequence)
대표적 \n, \t, \0(널문자)
특수한 기능을 가진 문자 앞에 \ 역슬래쉬 위치시키면 특수 기능 사라짐.
실습
달러화를 원화로 계산하는 프로그램 (환율은 1120원으로 가정)
- 제어문자 연습
다항식 계산
'Computer Science > C언어' 카테고리의 다른 글
[C언어] #2 C언어 기초사항 (0) | 2018.02.03 |
---|---|
[C언어] #1 C 프로그래밍 소개 (0) | 2018.02.03 |