| 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 |
|