프로그래밍

 3198, 1/160 회원가입  로그인  
   eo4929
   으악 아스키코드ㅠ

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


int code;
        printf("아스키 코드값 :");
        scanf("%d",&code);
        printf("%c\n",code);
        return 0;
는 잘되는데

int code;
        printf("아스키 코드값 :");
        scanf("%c",&code);
        printf("%d\n",code);
        return 0;
하면 안되는 이유가 뭘 까요 ㅠ

  Hit : 4340     Date : 2014/01/08 11:34



    
socks 어떻게 안된다는 말씀이신지 설명해주실 수 있을까요?

일단 설명해드리면 %d는 4바이트 정수 이고 %c는 1바이트 문자 입니다.
처음에 code는 int형으로 4바이트 정수로 선언되었고
마지막 printf("%d\n",code); 에서도 4바이트 부호 있는 정수로 출력하겠죠.
만약
컴파일을 하고
scanf("%c", &code); 가 실행될때
특정 값을 넣었다면 해당 값의 아스키코드값이 1바이트로 잘려서 &code의 하위 바이트에 붙여넣기 됩니다.
따라서 printf("%d\n",code); 여기서 출력하게되면 4바이트 부호 있는 정수로 출력하므로 처음에 code 변수에 있던 쓰레기 값이 남아서 쓰레기값의 하위바이트만 바뀌고 4바이트 부호 있는 정수로 엉뚱한 쓰레기 값이 출력됩니다.
2014/01/25  
kpoo2p 더 쉽게 말하자면.. %c는 문자만 입력할 수 있는데 code라는 변수가 Int형이라서 변수 타입이 안맞아서 그래요~
타입을 맞추세요!
2014/02/14