1619, 1/81 회원가입  로그인  
   hipro
   int 와 unsigned int 에서...

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1896 [복사]


#include<stdio.h>

void main()
{
        int a=-10;
        unsigned int c;
        unsigned int b=5;
        c=a+b;
        printf("%d\n",c);
}

라고 했는데

-5라고 잘 나오네요...

흠.. 왠지 쓰레기값이 나와야할꺼 같은데.. 설명 좀 해주세요!

  Hit : 7314     Date : 2011/12/04 09:32



    
BrokenPipe 알려드리려고했는데 바로 나가시네요 ㅜㅜ
손님_msp임다

저도 찾아보진 않아서 정확히 알진 못하지만
unsigned 형을 printf로 출력하실땐 %u 포맷을 사용하셔야해요
그렇게 해보시면 쓰레기 값은 아니고 4294967281이 나옵니다
2011/12/04  
chaser1963 어차피 비트의 표현일뿐이고
-10을 2의 보수로 취한값
그리고 unsigned int 형으로 선언한 변수가5인데, 이건 그냥 signed int 5랑 같습니다.
중요한건 unsigned와 signed의 연산에선 모두
unsigned로 변환한 후 연산을 하게 됩니다.
결국엔 -5의 2의보수형으로 선언되어있고,

그걸 signed int형으로 출력하려고 해서 위와같은 값이 나오고 쓰레기값이 나올 일은 없답니다-_-;
2011/12/04  
chaser1963 이해안가시면 system programming a programmer`s perspect라는 책이있는데,

거기 보시면 잘 나와있답니다! 글고 여긴 ㅡㅡ;;강좌게시판이지...질게가아닌듯
2011/12/04  
Cpgroot 질문게시판으로 갑시다 ㅎㅎ. 2011/12/04