본문 바로가기

분류 전체보기

(225)
[홍정모의 따라하며 배우는 C언어] 4.9 printf() 함수가 인자들을 해석하는 과정 4.9 printf() 함수가 인자들을 해석하는 과정 #include int main() { float n1 = 3.14;// 4 bytes double n2 = 1.234;// 8 bytes int n3 = 1024;// 4 bytes printf("Right case :\n"); printf("%f %f %d\n\n", n1, n2, n3); // Note the warnings in output window printf("Wrong cases :\n"); printf("%d %d %d\n\n", n1, n2, n3);// 4, 4, 4 (N, N, N) printf("%lld %lld %d\n\n", n1, n2, n3);// 8, 8, 8 (N, N, Y) printf("%f %d %d\n\n",..
[홍정모의 따라하며 배우는 C언어] 4.6 명백한 상수들 ~ 4.8 변환 지정자의 수식어들 4.6 명백한 상수들 명백한 상수(Manifest Constants) : #define(전처리기)를 이용해서 선언이 된 기호적 상수 #include #include // INT_MAX, ... , etc-> 정수의 표현 범위를 알려줌 #include // FLT_MAX, ... , etc-> 실수의 표현 범위를 알려줌 #define PI 3.141592// manifest constants, symbolic constants int main() { printf("PI is %f\n", PI); printf("Biggest int : %d\n", INT_MAX); printf("One byte in this system is %d bits\n", CHAR_BIT); printf("Smallest norma..
[홍정모의 따라하며 배우는 C언어] 4.3 문자열이 메모리에 저장되는 구조 ~ 4.5 기호적 상수와 전처리기 4.3 문자열이 메모리에 저장되는 구조 문자열은 크기가 제각각일 경우가 많아 마지막이 어딘지 표현하기 위해 배열의 마지막 칸에 null character ('\0')를 집어넣음 #include int main() { int a = 1; int int_arr[10] = { 0,1,2,3,4,5,6,7,8,9 };// 수배열의 값 초기화 printf("%i %i %i\n", int_arr[0], int_arr[1], int_arr[9]); // 배열의 각 값들에 접근, 배열의 첫번째 index는 0 return 0; } Output : 0 1 9 #include int main() { char c = 'a'; char str1[10] = "Hello";// 문자열 초기화시는 큰따옴표 사용. Hello + '..
[홍정모의 따라하며 배우는 C언어] 3.13 불리언형 ~ 4.2 sizeof 연산자 3.13 불리언형 불리언형 : 논리 연산시 사용. 논리 자료형 이라고도 부름 불리언형은 참(1), 거짓(0)의 두가지 값만 가질 수 있음 -> 내부적으론 정수형 참, 거짓을 표현하는 bit 1자리만을 사용하나 자료형이 가질 수 있는 최소 크기가 1byte 이므로 불리언형은 1byte 크기를 가짐 #include #include // true와 false를 직접 문자로 넣어 사용 가능 int main() { printf("%u\n", sizeof(_Bool));// 1byte _Bool b1;// 불리언형 자료형 선언 b1 = 0;// false b1 = 1;// true printf("%d\n", b1);// 형식 지정자가 따로 없음 -> 정수 형식지정자 사용 bool b2, b3;// stdbool.h..
[홍정모의 따라하며 배우는 C언어] 3.11 부동소수점형 ~ 3.12 부동소수점형의 한계 3.11 부동소수점형 컴퓨터에서 실수(float)를 표현하거나 다룰 때 부동소수점형 사용 앞의 '부' 는 한자 뜰 부로, 소수점이 떠다니듯 움직인다는 뜻 가수 부분을 뜻하는 mantissa라는 용어가 로그에서도 사용되는데 의미가 비슷하면서도 다르므로 가급적 사용하지 말자고 함 -> 대신 significand 사용 유효숫자(significant number)가 다르다 = 정밀도가 다르다 유효숫자가 많으면 많을수록 더 정밀해짐 실수를 컴퓨터에서 부동소수점 자료형으로 저장을 할 때 Normalized significand 형태로 바꿔서 저장 * 10진수(-314.625) -> 32bit 부동소수점 변환 예시 가수부는 mantissa 혹은 fraction 음수이므로 sign bit = 1 -314.625 (10..
[홍정모의 따라하며 배우는 C언어] 3.9 고정 너비 정수 ~ 3.10 문자형 3.9 고정 너비 정수 C언어는 각 자료형의 최소 메모리 크기만을 규정 지음 -> 정수형은 시스템마다 자료형의 크기가 달라질 수 있음 -> 이식성이 안 좋음 위의 문제점을 해결하기 위해 변수, 자료형의 크기를 명확하게 고정할 수 있도록 하는 고정 너비 정수형 사용 고정 너비 정수형을 사용하여 정수를 너비가 고정되어 있는 자료형처럼 사용 가능 #include #include // 이미 inttypes.h에 포함되어 있음 #include // printf문 사용시 형식 지정자를 사용해야 하는데 고정 너비 정수형의 형식 지정자를 // 모름 -> 그걸 미리 정의해놓은게 inttypes.h int main() { int i; int32_t i32;// int의 크기를 32bit로 고정시킴 -> i32는 어느 시스..
[홍정모의 따라하며 배우는 C언어] 3.7 다양한 정수형들 ~ 3.8 8진수와 16진수 3.7 다양한 정수형들 최소 크기는 각 자료형이 최소한 이만큼의 크기를 가져야 함을 의미 -> C언어는 각 자료형의 최소 메모리 크기만을 규정 지음 long은 int가 2byte일 때 만들어졌으므로 4byte 형식 지정자에서 h는 짧음을 의미 형식 지정자는 C언어에서만 사용 #include #include #include int main() { char c = 65; short s = 200; unsigned int ui = 3000000000U;// 뒤의 U, L, LL은 생략 가능 (리터럴의 자료형을 표현해주는 기호들) long l = 65537L; long long ll = 12345678908642LL; printf("char = %hhd, %d, %c\n", c, c, c);// %c는 변수를 ..
[홍정모의 따라하며 배우는 C언어] 3.5 정수와 실수 ~ 3.6 정수의 오버플로우 3.5 정수와 실수 정수(Integer) : 양의 정수, 0 , 음의 정수. 양의 정수와 0은 unsigned int 실수(Real number) : 정수로는 표현할 수 없는 정수 사이의 작은 값들을 포함. 내부적으로 부동소수점(Floating Point) 사용 정수와 실수 모두 컴퓨터 내부에서는 2진수로 사용 Signed bit : 부호가 있는 수(+2, -3등). MSB를 부호 (+,-) 표현에 사용 (0 = 양수, 1 = 음수). 음수 표현시 2의 보수법 사용 Unsigned bit : 부호가 없는 수. 모든 bit를 숫자 표현에 사용 두 bit는 표현 가능 크기는 같으나 범위가 다름. ex) signed 8 bit : -128 ~ 127, unsigned 8 bit : 0 ~ 255 * 부동소수점..