2016-08-31 6 views
-1

안녕하세요, 저는 C 언어를 처음 프로그래밍 언어로 시작했습니다.scanf가 임의의 숫자를 생성합니까?

나는 약간 주위에 scanf()와 놀고 있었고, 이상한 것을 발견했다.

#include <stdio.h> 
#include <Windows.h> 
int main() 
{ 
    int x; 

    printf(" Type any number : "); 
    scanf("%d", &x); 
    printf("You entered %d.\n", &x); 

    system("pause"); 
    return 0; 
} 

항상 7 또는 8 자리 숫자의 결과를 표시합니다.

어떻게 가능합니까?

+8

주소를 잘못 인쇄했습니다. 그만해. 컴파일러의 경고를 최대로 켭니다. – Mat

+4

'printf ("% d. % n을 입력했습니다. \ n", &x);'->'printf ("% d. \ n", x)를 입력했습니다 : – LPs

답변

5

printfx의 값 대신 값. 다음과 같이 수정 :

printf("You entered %d.\n", x); 

scanf는 결과를 저장할 주소, printf 값 자체를 취할 수 원한다.

5

x의 주소를 인쇄하고 있습니다. printf에서 '&'을 제거하면 올바른 것을 볼 수 있습니다. 변수 앞에 포인터를 가져 오기 전에 &을 넣습니다. 값을 변경해야하기 때문에 scanf에 필요하지만 printf는 값만 사용하기 때문에 포인터는 필요하지 않습니다 (항상 포인터 인 문자열 제외).

+0

예 값 반환은 해당 변수에 대한 포인터 주소입니다 –

+1

사실 , 변수 앞에 변수 앞에'& '를 붙이면 포인터의 주소를 취할 수 있습니다. –

관련 문제