이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date |
2010/05/09 23:03:54 |
Name |
개미 |
Subject |
C언어 질문입니다(매우 기본) |
#include<stdio.h>
int main(void)
{
int val1;
int result1;
printf("숫자 하나를 입력하세요 : ");
scanf("%d", &val1);
result1=val1*val1;
printf("입력한 %d의 제곱은 %d \n", val1, result1);
return 0;
}
----------------------------------------------------------------------------------------------------------------------------
안녕하세요~ 부대 전역하니.. 기억도 안나고.. 처음부터 열심히 프로그래밍 공부를 하려고 합니다^^
아주 기본적인 C언어 질문인데요.
scanf 함수로 입력받은 정수에 제곱연산을 구하는 문제인데..
제가 처음 저 문제를 보고 생각나는대로 만든게 저 위에 써 놓았습니다.
실행해보고 궁금한게 생겼는데요.
scanf("%d", &val1); <- 바로 이부분입니다.
처음에 실행했을때는 scanf("%d ", &val1); 이렇게 실행 했습니다.
자세히 보시면 %d와 " 사이에 한칸 공백을 만들었죠... 처음에는 이 공백에 의미를 몰랐습니다;;
그런데 공백을 넣고 실행을 해보니 저는 분명히 한번만 정수를 받으려 했는데..
꼭 두번입력해야 다음 printf 함수가 호출이 되서 답이 나오더군요...
그것도 두번째에 입력한 숫자는 아무거나 입력해도 상관없더군요;;;
그래서 책을 유심히 다시 봣는데.. "scanf 함수는 데이터의 경계를 공백으로 구분 한다"
라는 구절이 있더라구요... 저는 이 말이 실행해서 숫자를 입력할때만 해당 하는 줄 알았는데..
지금 제가 겪은 이 현상도 적용이 되는건가요?? 즉...%d 뒤에 공백 하나가 다음 데이터를 받겠다는
의미로 적용이 되는건지.. 제가 이 현상을 이해하고 있는게 답이 맞는건지..
아니면 다른 이유가 있는건지.. 궁금합니다 ;;
막상 써놓고 보니.. 매우 간단한 질문인데.. 복잡해보이네요;;;;
pgr21에 고수분들 자세한 설명좀 부탁드립니다 ^^
|
통합규정 1.3 이용안내 인용
"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
|