보통.... 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>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
[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
댓글 달기