책보면서 독학하는 2일차 짬찐데요
%lu 는 부호없는 10진수 출력시의 문자열 변환 포맷지정이고
%d 는 그냥 10진수 출력시의 문자열 변환 포맷지정인데
여기서 %d 넣고 빌드해보니깐 안되고 %lu 로 바꾸라고 하더라구요
무슨차이가 있는걸까요?
책보면서 독학하는 2일차 짬찐데요
%lu 는 부호없는 10진수 출력시의 문자열 변환 포맷지정이고
%d 는 그냥 10진수 출력시의 문자열 변환 포맷지정인데
여기서 %d 넣고 빌드해보니깐 안되고 %lu 로 바꾸라고 하더라구요
무슨차이가 있는걸까요?
아니야 바이트 크기에 따른 출력 지정이고, 거기다가 unsigned 면 또 다르지. 보통 sizeof 연산자 번환은 size_t 타입인데 unsigned long long 이라고 보면 된다. 그니까 %lu 지 - return 0;
아하 이해가 됐습니다 감사합니다 ^^^^^^^^^^^^
뭐 딱히 Clang 전용 질문은 아니네 sizeof의 결과는 그 흔히 말하는 유명한 size_t 타입이기 때문이고 네 멋져보이는 맥은 분명 64비트 CPU 컴퓨터일 것이므로 size_t는 unsigned long이자 64비트 비부호 정수형일 것이야. 그래서 l (for long) + u (for unsigned) 로 쓰라고 하는 것인데 glibc 등의 경우에는 size_t용으로 아예 %z 같은 게 있어서 더 편하지.
지금보는책이 32비트시기에 만들어진거라 갈팡질팡인데 형님덕분에 조금더 알아갈수잇어서 감사합니다 저도 이런 기초질문 올라오면 답 잘해줄수잇을정도로 열심히할게요ㅋㅋㅋㅋ