5-1 C언어가 제공하는 기본 자료형
- C언어는 변수의 선언을 위해 자료형을 제공한다.
* 기본 자료형과 데이터 표현 범위
자료형 |
할당되는 메모리 크기 |
표현 가능한 데이터의 범위 |
정수형 |
char |
1바이트 |
-128 ~ 127 |
short |
2바이트 |
-32768 ~ 32767 |
int |
4바이트 |
-2147483648 ~ 2147483647 |
long |
4바이트 |
-2147483648 ~ 2147483647 |
실수형 |
float |
4바이트 |
3.4*10^-37 ~ 3.4*10^38 |
double |
8바이트 |
1.7*10^-307 ~ 1.7*10^308 |
long double |
8바이트 혹은 그 이상 |
유동적임 |
- sizeof는 함수가 아니라 연산자이다.
- 컴퓨터는 내부적으로 int형 데이터를 가장 빠르게 연산(처리)한다. 따라서 메모리가 낭비되더라도 연산을 하는 정수에는 int형을 쓰는게 좋다.
- char형은 문자를 표현하는데 좋다. 문자로 연산을 하는 일은 드물기 때문이다.
- unsigned가 붙으면 부호 비트를 사용하지 않는다. 따라서 각 데이터 표현 범위가 -x ~ x-1 에서 0 ~ 2x-1이 되는 것이다.
5-2 상수
- 리터럴(literal)상수 : 이름이 없는 상수. 코드상에서 이름없이 문자,숫자 그대로 쓰인다.
- 심볼릭 상수 : 이름을 지니는 상수. const 키워드를 사용하거나, 매크로를 사용할 수 있다.
ex) const int MAX = 100;
const 키워드를 사용할 때에는 선언과 동시에 초기화를 해야만 한다. (상수이기 때문에 나중에 변경할 수 없다.)
- 상수의 이름은 일반적으로 대문자로 표시한다.
5-3 자료형 변환
1) 자동 형 변환
-대입 연산시 발생.
실수형 데이터를 정수형 데이터 타입에 대입하면 소수부의 손실이 발생한다.
값의 표현 범위가 적은 데이터 타입에 대입하면 비트의 앞부분이 그 차이만큼 버려진다. 즉, 값이 달라진다.
-정수의 승격 ( int형 연산이 빠른 이유 )
char형과 short형 데이터들의 연산은 각 데이터를 int형으로 변환시킨후에 연산을 진행한 후 다시 해당 데이터 타입으로 변환시킨다. int형 연산은 이 형 변환을 거치지 않기 때문에 연산이 빠른 것이다.
-산술 연산 과정에서 발생
데이터 타입이 다른 두 수를 연산 할 때, 데이터의 손실이 최소화되는 방향으로 형 변환이 일어난다.
산술 연산 과정에서의 형 변환 방향은
char -> int -> long -> float -> double -> long double 이다.
2) 강제 형 변환 ( 명시적 형 변환 )
-변수 앞에 괄호를 붙여서 강제적으로 데이터 타입을 변환시킬 수 있다.
ex) b = (float)a/2 ;