Re: p.131 질문 있습니다.
, 도장_ 관리자님이 작성앞에 0을 붙여서 017로 쓴 것은 8진수입니다.
책의 본문에는 '8진수와 16진수에도 접미사를 사용할 수 있습니다'라고 되어 있습니다. '10진수와 16진수에도 접미사를 사용할 수 있습니다'라고 쓰여 있지 않습니다.
빈자리에 공백을 채우기 위해 쓰는 0과 8진수를 구분하기 위해 쓰는 접두사 0을 혼동하는 것 같습니다.
--------------
서식 지정자를 사용할 때, 숫자 타입(정수, 실수)와 그 크기(부호 있는/없는, short/long/long long)에 따라 다른 서식 지정자를 사용해야 합니다. 그래서 예제에서 사용된 서식 지정자들은 다음과 같습니다.
- printf("0%lo\n", 017L);: 8진수 long (long int) 출력, 접미사 L 사용
- printf("0%lo\n", 017UL);: 8진수 unsigned long (unsigned long int) 출력, 접미사 UL 사용
- printf("0x%lX\n", 0x7FFFFFL);: 16진수 long (long int) 출력, 접미사 L 사용
- printf("0x%lX\n", 0xFFFFFFFFUL);: 16진수 unsigned long (unsigned long int) 출력, 접미사 UL 사용
여기서 %l은 "long int" 타입의 출력을 의미합니다. 접미사는 해당 변수가 어떤 타입인지 나타내주는 것이므로, 서식 지정자에서는 사용하지 않습니다.
또한, 실수 리터럴의 경우에는 e(E) 접미사를 사용하여 지수 표기법으로 출력할 수 있습니다. 따라서 예제에서 사용된 서식 지정자는 다음과 같습니다.
- printf("%f\n", 1.0e-5f);: float 출력, 지수 표기법 사용하지 않음
- printf("%f\n", 1.0e-5F);: float 출력, 지수 표기법 사용하지 않음
- printf("%f\n", 1.0e-5);: double 출력, 지수 표기법 사용하지 않음
- printf("%Lf\n", 1.0e-5l);: long double 출력, 지수 표기법 사용하지 않음
- printf("%Lf\n", 1.0e-5L);: long double 출력, 지수 표기법 사용하지 않음
여기서 %f는 "float" 타입의 출력을 의미합니다. 지수 표기법을 사용하려면 %e(E)를 사용해야 합니다.