티스토리 뷰

< 자료형 - 2 >

 

실수형에 대해,

float 는 단정도형이며 32bits (소수점이하 6자리)

double 는 배정도형이며 64bits (소수점이하 15자리)

long double 는 특수정도형이며 80bits ( 그 이상) // 단, long double을 지원 안하는 컴파일러들이 있다.

float 123.0; // float 인식
double 123.0; // double 인식
123.0F;  // float 인식
123.0; // double 인식

중요!

float 형식은 '오차'를 가짐. why? 근사값 처리를 하기 때문에.

printf("%f\n", 2147483648.0F - 20); // 2147483648.000000
printf("%f\n", 2147483648.0F - 40); // 2147483648.000000
printf("%f\n", 2147483648.0F - 60); // 2147483648.000000
printf("%f\n", 2147483648.0F - 64); // 2147483648.000000
printf("%f\n", 2147483648.0F - 65); // 2147483520.000000

이러한 오류가 난다.

 

double 형으로 바꿔서 출력할시에는

printf("%f\n", 2147483648.0 - 20); // 2147483628.000000
printf("%f\n", 2147483648.0 - 40); // 2147483608.000000
printf("%f\n", 2147483648.0 - 60); // 2147483588.000000
printf("%f\n", 2147483648.0 - 64); // 2147483584.000000
printf("%f\n", 2147483648.0 - 65); // 2147483583.000000

제대로 출력됨.

 

또한 문자열이란 문자배열이며,

상수화된 문자 '배열'이란 말을 쓸 수 있다.

배열은 이름을 가지며 주소를 갖는다.

 

추가적인 정보로써,

int nData = 0; 에서 int는 자료형, nData는 변수이름, 0은 초깃값이라는 것을 배웠고,

'nData 는 0이라는 초깃값이 int라는 자료형으로 선언된 변수다' 라고는 이제 말할 수 있을겁니다.

 

여기서, int는 32비트 였죠? 그러면 자료가 00...00 (0이 32개) 로 2진수형태로 변환되어서 저장이 되었을 겁니다.

변수 앞에 & 을 붙이면, 해당 변수의 메모리 주소가 되고, scanf 에서는 이 주소에 저장을 해라. 는 뜻이 됩니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함