2016-06-23 2 views
-2

왜 C 프로그램이 정확한 나이를 표시하지 않습니까? 주식 컴파일러와 코드 블록에 메신저. 그것은 50을 계속 보여줍니다. 왜 그렇게 될지 몰랐습니다. 또한 나는 그것을 여기에서 시험해 보았다 http://www.tutorialspoint.com/compile_c_online.php. 연령을 0으로 표시합니다. 당신이 나이에 비 sensical 값을 가지고 있도록 초기화되지c 프로그램에서 정확한 나이가 표시되지 않습니다.

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int age; 
    int currentYear; 
    int birthYear; 

    age = currentYear - birthYear; 
    currentYear = 2016; 
    birthYear = 2000; 

    printf ("You are %d years old. It is now:%d. It began in:%d.", age, currentYear, birthYear); 

    return 0; 
} 
+1

여기에 질문하기 전에 최소한의 기본적인 프로그래밍을 공부해야합니다. SO는 전문적이고 열광적 인 _programmers_를위한 사이트입니다. – Lundin

답변

4
// change the order 

currentYear = 2016; 
birthYear = 2000; 
age = currentYear - birthYear; 

결론

  1. 자동 변수는 에 불확정 단계 있습니다.
  2. 또한 표현식은 입니다. 일반적으로은 코드에 표시된 순서대로 평가됩니다. 논리적으로는 age = currentYear - birthYear;을 끝에 붙이는 것이 좋습니다.

참조

ISO/IEC 9899은 : 자동 저장 기간을 가진 개체를 명시 적 초기화되지 않은 경우, 값은 불확정 6.79-> 10

이다 201x.

2

재주문

age = currentYear - birthYear; 
currentYear = 2016; 
birthYear = 2000; 

currentYear = 2016; 
birthYear = 2000; 
age = currentYear - birthYear; 

에 먼저 (결과는 정의되지 않은 때문에 나쁜)이 개 초기화되지 않은 변수의 차이를했다 만 당신은 2 년 변수를 설정 .

0

할당되지 않은 변수를 빼기 때문에. 값을 currentYearbirthYear에 지정한 후에 age = currentYear - birthYear;을 배치해야합니다.

관련 문제