2014-04-09 3 views
0

이미 검색했지만 내 대답을 찾을 수 없습니다. 나는 상대적으로 C (고등학생)에서 새롭고, 내가 쓰는 수학 프로그램에서 항상 문제가 발생합니다. 나는 작은 숫자를 가질 것이고, 그들이 끝날 때 그 결과는 거대한 숫자가 될 것입니다. 나는 사이트와 책에서 프로그램을 복사했고 동일한 문제가 발생합니다. 다음은 소스 코드 예입니다.작은 숫자를 추가 할 때 프로그램에서 거대한 숫자를 표시합니다.

#include <stdio.h> 

int main(){ 
    int c, k = c + 273; 
    printf("Enter your celsius degree here...\n"); 
    scanf("%d",&c); 
    printf("%d",&k); 
} 

간단한 코드이지만 여전히 이상하게 나옵니다.

+5

값을 지정하기 전에 'c'를 사용하고 있습니다. 자동 변수이기 때문에 값은 불확실합니다. 'scanf' 다음에'k = c + 273'을 움직이십시오. 또한,'& k'는'printf'에서 단지'k'를 사용하고자하는'k'의 주소를 돌려줍니다. –

+0

코드에도 곱셈은 없습니다 ... – BergQuester

+1

'k = c + 273'을 초기화 할 때 아직 값을 설정하지 않았기 때문에 C의 값은 아무 것이나 될 수 있습니다. 대신 scanf 호출 후 k를 정의한 다음 c는 값을 가지며 k는 올바른 값을 갖습니다. 하지만 당신의 printf는 k의 값을 출력하지 않습니다 - k의 ADDRESS를 출력하므로'printf ("% d", k); –

답변

0

코드에서 c가 초기화되지 않았습니다. c에서 초기화되지 않은 변수에는 정의되지 않은 동작 (가비지) 값이 있습니다.

+0

printf 호출이 값 대신 k의 주소를 인쇄하고 있다는 것을 잊지 마십시오. –

+0

고마워, 얘들 아! 분명히 배울 점이 조금 있습니다. – calebmcarr

1

k을 계산하기 전에 c에 값을 할당하지 않았습니다. 그럼, 당신은 당신의 코드를 wnat 것은 아마도 : 인쇄 할 때, 당신은 &를 사용하지 않는

#include<stdio.h> 
    int main(){ 
    int c, k; 
    printf("Enter your celsius degree here...\n"); 
    scanf("%d",&c); 
    k = c + 273; 
    printf("%d",k); 
} 

공지있다. 그 주소는 k입니다.

0

이 시도 :

int c = 0, k = 0; 
k = c +273; 
scanf("%d", &c); 
printf("%d", k); 

K와 C의 초기화가 그들에 저장된 쓰레기 값을 제거 도움이 될 것입니다 당신이 올바른 출력을 얻을 것이다.

관련 문제