보통.... unsigned 형에 대해서는 %u를 사용하라고 하던데... %d를 사용해도 잘 출력이 되더군요.. -.+ 원래 이런건가요..?
그냥 정수형은 int든 char든 unsigned든 뭐든지 %d로 출력하고 실수형은 그냥 %f로 출력하면 되는지요....
printf("%d %u\n", -1, -1);
결과를 살펴보세요.
-1은 unsigned가 아니므로 무효 8) 그건 "signed를 %u로 출력해도 된다"의 반론이네요 "unsigned를 %d로 출력해도 된다"의 반론은 이것으로 확인하세요 :)
printf("%d, %u\n", 3000000000u, 3000000000u);
unsigned char a = 200 ; printf("%d %u \n", a , a ); 모두 정상으로 나오는데요....
그렇다면... int 형자료형혹은 자료형 범위일때만 일때만 %u를 사용하면 되는건가요??
int, unsigned int 가 4 byte 라고 하면,
넘어온 4 byte를 int 형 range에서 볼것이냐, unsigned int range에서 볼것이냐에 따라서 겹치고 있지 않는 범위의 값이 다르게 나옵니다.
오래된 컴파일러는 포맷 내용을 파싱하지 않기 때문에 넘기는 type이 잘못 넘어가도 알 수 없지만, 요즘 컴파일러는 -Wall 만 켜도 친절한 타잎 확인을 해줍니다.
d, u 의 차이는 고사하고, int 와 long 형의 type이 길이가 같다고 섞어써도 무방한 경우가 있죠. 이때는 ld, lu 를 써야합니다. short 를 넘길 때는 h 를 써야하구요.
---http://coolengineer.com
[code:1]printf("%d %u\n",
printf("%d %u\n", -1, -1);결과를 살펴보세요.
-1은 unsigned가 아니므로 무효 8)그건 "signed를 %u
-1은 unsigned가 아니므로 무효 8)
그건 "signed를 %u로 출력해도 된다"의 반론이네요
"unsigned를 %d로 출력해도 된다"의 반론은 이것으로 확인하세요 :)
printf("%d, %u\n", 3000000000u, 3000000000u);unsigned char a = 200 ;printf("%d %u \
unsigned char a = 200 ;
printf("%d %u \n", a , a );
모두 정상으로 나오는데요....
그렇다면... int 형자료형혹은 자료형 범위일때만 일때만 %u를 사용하면 되는건가요??
int, unsigned int 가 4 byte 라고 하면,넘어온
int, unsigned int 가 4 byte 라고 하면,
넘어온 4 byte를 int 형 range에서 볼것이냐, unsigned int range에서 볼것이냐에 따라서
겹치고 있지 않는 범위의 값이 다르게 나옵니다.
오래된 컴파일러는 포맷 내용을 파싱하지 않기 때문에 넘기는 type이 잘못 넘어가도 알 수 없지만, 요즘 컴파일러는 -Wall 만 켜도 친절한 타잎 확인을 해줍니다.
d, u 의 차이는 고사하고, int 와 long 형의 type이 길이가 같다고 섞어써도 무방한 경우가 있죠.
이때는 ld, lu 를 써야합니다. short 를 넘길 때는 h 를 써야하구요.
---
http://coolengineer.com