2016-06-03 11 views
1

Ich bin neu in der Programmierung. Ich habe versucht, die Summe der Gleichung zum vorherigen Wert hinzuzufügen, als ich ein merkwürdiges Verhalten bemerkte.Anfänger Programmierer C++ (lokale vs globale Variable Erklärung)

Wenn ich int result innen int main() erklären dann bekomme ich eine leere Antwort, aber wenn ich int result außerhalb int main() erklären dann bekomme ich diese Werte: 6,11,16 ... 91,96,101. Für mich ergibt das keinen Sinn, da ich keine andere Funktion habe.

Warum passiert das?

#include<iostream> 
using namespace std; 

int main() 
{ 
    int y =1; 
    int result; 

    while (result <100) 
    { 
    result = y +5; 
    cout << result << ","; 
    y = result; 

    } 
} 
+0

[Clang] (http://coliru.stacked-crooked.com/a/b339bef1faf5e3ac) ist nicht ganz so nachsichtig. –

+0

Warum brauchen Sie zwei Variablen? Sie können einfach 'y = y + 5;' – Barmar

Antwort

5

Innerhalb einer Funktion erklärt int result; eine Variable result genannt, aber es auf einen bestimmten Wert nicht initialisiert werden. Bis Sie ihm einen Wert zuweisen, kann es alles sein, und das Verhalten beim Lesen ist undefiniert. Also, wenn Sie seinen Wert in Ihrem while Zustand lesen, könnte es alles sein; Ihre Schleife kann ausgeführt werden oder nicht. Sie benötigen einen Anfangswert für result zu machen, das Verhalten Ihres Programms liefern gut definiert:

int result = 0; 

Im Gegensatz zu lokalen Variablen sind globale Variablen definiert auf einen Standardwert initialisiert werden, wenn kein Anfangswert wird ausdrücklich vorgesehen, Wenn Sie also den Wert result in Ihrer while Bedingung lesen, ist es 0, und Ihre Schleife wird ausgeführt.