2016-08-01 7 views
-1

저는 Java에서 왔기 때문에 코드 작성 능력과 깊이있는 작업 방법에 대한 지식을 향상시키고 싶습니다. 그리고이 언어를위한 최선의 언어는 C의 어머니라고 생각합니다. 나는 C가 어떻게 작동하는지에 대해 매우 흥분하고 있지만, 이제는 의심 스럽습니다. C에서 첫 번째 코드가 작동하지 않는 이유는 무엇입니까?C와 정수, first first and later

P.s .: 코드 속도를 높이고 문제에 집중하기 위해 몇 가지 단계를 건너 뜁니다. 나는 C99를 공부하고있다. 이 -1234567 ECC 될 것

int a,b,c; 
int sum = a+b+c; 
print scanf ecc... 
printf("%d", sum); 

결과 ..

그리고이 코드가 멋진 작동하여, 이것이 명령형 프로그래밍의 평균은? 나쁜 영어 죄송합니다

int a,b,c; 
int sum; 
print scanf ecc... 
sum = a+b+c; 
printf("%d", sum); 

가 나는 또한 개선, 내 모국어가 아닌 :

+0

'왜 첫 번째 코드는 작동하지 않습니까? 두 번째 예가? '첫 번째 변수'a, b, c '는 초기화되지 않은 채 사용되기 때문입니다. –

답변

1

지역 변수는 C에서 초기화되지 D °, 그 값은 불확정 있습니다. 초기화되지 않은 로컬 변수를 사용하면 정의되지 않은 동작이 발생합니다.

C도 루프 나 힙이없는 순차적 Java입니다. 문은 위에서 아래로 실행되므로 사용 후 변수를 초기화하려면 scanf을 호출하면 작동하지 않습니다. 이전 작업은 다시 실행되지 않습니다.

1

당신은 즉

 int a,b,c; 
    int sum = a+b+c; 
    print scanf ecc... 
    printf("%d", sum); 

처음 추가 할 코드의 첫 번째 부분을 사용하면 a, b, c 다음 쓰레기 값

동안 두 번째 경우에서와 결과를 생성합니다

 int a,b,c; 
    int sum; 
    print scanf ecc... 
    sum = a+b+c; 
    printf("%d", sum); 

scanf를 사용하여 값을 읽은 다음 해당 값을 추가하면됩니다. 쓰레기 값을 가져 오지 않고 훌륭한 결과를 얻지 못한다.