C 상수 리터럴 - sonkoni/Koni-Wiki GitHub Wiki
리터럴은 문자 그대로를 의미하는 것으로, 프로그래밍적으로는 상수화를 의미한다. 즉, 메모리의 읽기전용 공간에 배치된다.
자료형 리터럴 접미사
-------------------------
int 없음
long l, L
long long ll, LL
unsigned int u, U
unsigned long ul, UL
unsigned long long ull, ULL
-------------------------
float f, F
double 없음
long double l, L
-------------------------
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("10-> %d\n", -10); // int
printf("10-> %ld\n", -10l); // long
printf("10-> %lld\n", -10ll); // long long
printf("10-> %u\n", 10u); // unsigned int
printf("10-> %lu\n", 10ul); // unsigned long
printf("10-> %llu\n", 10ull); // unsigned long long
printf("8-> 0%lo\n", 017l); // long 8진법
printf("8-> 0%lo\n", 017ul); // unsigned long 8진법
printf("16-> 0x%lX\n", 0x7FFFFFFl); // long 8진법
printf("16-> 0x%lX\n", 0x7FFFFFFul); // unsigned long 8진법
printf("%f\n", 0.1f); // float
printf("%f\n", 0.1); // double
printf("%Lf\n", 0.1l); // long double
printf("%f\n", 1.0e-5f); // float
printf("%f\n", 1.0e-5); // double
printf("%Lf\n", 1.0e-5l); // long double
return 0;
}
// 10-> -10
// 10-> -10
// 10-> -10
// 10-> 10
// 10-> 10
// 10-> 10
// 8-> 017
// 8-> 017
// 16-> 0x7FFFFFF
// 16-> 0x7FFFFFF
// 0.100000
// 0.100000
// 0.100000
// 0.000010
// 0.000010
// 0.000010동일한 리터럴은 static 처럼 동일한 위치를 가리킨다.
char *a = "Hello";
char *b = "Hello";
printf("=> %p, %p", a, b);
// => 0x10308ff84, 0x10308ff84