본문 바로가기

전체 글

(12)
(05) C언어기초 - 연산자 연산자 우선순위는 알아두는 게 좋다 하지만 평가 순위는 우선순위와는 다르다 f() + g() * h()는 g h f 순이 아닌 어떤 순으로 호출되는지는 모른다 sizeof 연산자 size_t 반환한다 (부호 없는 정수형의 상수) sizeof(char)은 무조건 1이다 (char은 몇 비트인지 상관없이 부조건 1바이트) char char_array[30]; sizeof(char_array) == 30 컴파일 도중 크기를 찾아준다 (함수 아님!!!) _t는 typedef를 했다는 힌트 플랫폼에 따라 다른 자료형을 쓰기 위해서 size_t를 typedef로 지정해 줌 표준은 size_t의 크기를 딱히 명시하지 않았다 size_t는 부호 없는 정수형이지만 실제 데이터형은 아니다 하지만 배열의 바이트 크기를 얻을..
(04) C언어기초 - 자료형(2) long long은 최소 32비트 int이상의 크기 최소 64비트인 정수형은 c89에는 없다 포팅 안전한 범위는 int와 같다 long의 리터럴은 숫자 뒤에 l을 붙인다 1 뒤에 l이 오면 잘 안보여서 L을 사용하기도 한다 float 부동 소수점 자료평 IEEE 754로 정해졌다 하지만 C는 CPU가 IEEE 754를 지원하는 실수 계산 장치를 장착하기 전부터 쓰였다 C89 표준에서는 크기 char 이상이기만 하면 된다 (IEEE 754가 아닐수도 있다) unsigned 없다 보통 안전한 크기는 32비트 float의 리터럴은 숫자 뒤에 f double 크기 float 이상이면 된다 float은 double보다 빠르게 연산하기 위해 만든 작은 부동소수점 자료형이다 float과 마찬가지로 IEEE float..
(03) C언어기초 - 자료형(1) char 형 C89 표준에 따르면 char은 최소 8비트인 정수형이다 보통 char형 == 1byte로 알고 있는 사람이 많지만 표준에 따르면 바이트가 아닌 비트로 나타낸다 이유는 바이트의 크기를 8비트로 고정시켜두지 않았기 때문이다 1byte는 항상 8bits가 아니라는 뜻이다 char을 '최소' 8bits인 정수형이라 표현했는데 최소라고 표현한 이유는 컴파일러마다 다르게 적용시킬 수 있게끔 설계하라는 뜻이다(?) char이 몇 비트인지 찾는 법은 헤더에서 CHAR_BIT를 보면 알 수 있다 1byte를 CHAR_BIT만큼이라고 말한다 즉, 가장 작은 단위를 CHAR_BIT크기인 1byte로 한다는 것이다 소형 기기에서는 공간이 충분하지 않을 수 있어서 char의 크기를 유동적으로 사용할 수 있게 했다..