2016-08-01 17 views
-1

Ich komme aus Java, ich möchte meine Fähigkeiten in der Codierung und das Wissen, wie es in der Tiefe funktioniert verbessern und ich denke, dass die beste Sprache dafür ist C die Mutter von allen. Ich bin sehr aufgeregt, wie es funktioniert, aber jetzt bitte erhebe mich einen Zweifel. Warum in C funktioniert der erste Code nicht und der zweite ja?C und Addition, Integer zuerst und später

Ps .: Ich werde einige Schritte überspringen, um den Code zu beschleunigen und auf das Problem konzentrieren. Ich studiere C99.

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

Das Ergebnis es -1.234.567 ecc sein ..

Und mit dieser Code es wunderbar funktioniert, das ist der Mittelwert einer imperativen Programmierung?

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

Sorry für schlechtes Englisch ist nicht meine erste Sprache, verbessert ich, dass auch: ° D

+0

'Warum in C funktioniert der erste Code nicht und der zweite ja?' Weil in den ersten Variablen 'a, b, c' nicht initialisiert werden. –

Antwort

1

Lokale Variablen in C nicht initialisiert werden, ihre Werte sind unbestimmt. Die Verwendung einer nicht initialisierten lokalen Variablen führt zu undefiniertem Verhalten.

C ist auch, genau wie Java, sequentiell in Abwesenheit von Schleifen oder gotos. Anweisungen werden von oben nach unten ausgeführt, sodass das Aufrufen von scanf zum Initialisieren einer Variablen nach der Verwendung nicht funktioniert. Die vorherige Operation wird nicht wiederholt.

1

Wenn Sie den ersten Teil des Codes, dh

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

wird zunächst das hinzufügen a, b, c und wird dann produzieren mit Müll Wert führen

während in zweiten Fall

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

es liest die Werte mit dem scanf und dann fügen Sie diese Werte so werden nicht den Müllwert nehmen und ein wunderbares Ergebnis erzeugen