C언어에서 int형은 CPU가 가장 효율적으로 다룰수 있는 정수형이라 정의한다.
CPU가 한번에 처리할 수 있는 양 즉, 레지스터(임시 저장장소)의 크기를 int형의 크기로 정하며
int형의 크기는 32비트 운영체제 가진 컴퓨터는 32bit=4byte이며,
64비트 운영체제(원도우 7 64bit)를 가진 컴퓨터는 int형이 64bit=8byte이 된다.
(최근에는 비주얼 C++과 Dev-C++은 __int64라는 64bit int형을 지원한다.)
컴퓨터 레지스터의 비트수가 많을 수록 더 성능이 좋다고 할 수 있다.
그래서 CPU를 많이 사용하는 프로그램은 효율성을 위해 32bit, 64bit 프로그램이 따로 있을 정도이다.
after effect, maya, 3d max등 그외 렌더링 프로그램, 인코딩 프로그램
수식내에서 char, unsigned char, enum형은 int형으로 자동 확장되며 float형은 double형으로 자동 확장된다.
따라서 컴파일러는 기본적으로 실수형 상수를 따로 지시(접미어F,f 또는 캐스트연산자)를 하지 않으면 double형으로 간주한다.
float base1 = 4.0 x 2.0 | float base2 = 4.0F x 2.0F |
4.0과 2.0을 double형으로 취급하여 계산 base1에 float 크기로 축약하여 저장 |
4.0과 2.0을 float형으로 취급하여 계산 base1에 저장 |
계산정밀도 ↑, 계산속도↓ |
계산속도↑ |
이렇게 처리하다 보니 float형과 double형이 정밀도 차이 때문에 실수형을 계산할 때 오차가 나게 마련이다.
#include<stdio.h> int main(void){ float a, b; b= 2.0e20+1.0; a=b-2.0e20; printf("%f ",a); return 0; }
=> 결과가 1이 나오지 않는다.
|
#include <stdio.h> int main(void){ float a, b; b= 2.0e4+1.0; a=b-2.0e4; printf("%f ", a); return 0;
}
=> 결과가 1이 나온다. |
|
2.0e4-> 2 다음 0이 4개 있는 수 +1 자료형은 5자리의 숫자를 저장할수 있으면 됨 |