2017-04-12 4 views
-1

Also jedes Mal, wenn ich versuche, ein "n" zu setzen, wird die erste Zeile eine Zahl ausgeben, die gleich n + 1 ist. Also bitte hilf mir was ich falsch gemacht habe! dankemein Programm druckt ein anderes Ergebnis aus, als erwartet

#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 
#include "../../../std_lib_facilities.h" 
int main() 
{ 
cout << "Enter a number: "; 
double n; 
cin >> n; 
cout << "n: " << n 
    << "\n++n: " << ++n 
    << "\nThree times of n: " << n * 3 
    << "\nTwice n: " << n + n 
    << "\nHalf of n: " << n/2 
    << "\nSquare root of n " << sqrt(n); 
int m = n; 
cout << "\nInteger of n: " << m 
    << "\nRemainder when divide n by 2: " << m % 2 
    << "\nDivision when divide n by 2: \n" << m/2; 
keep_window_open(); 
} 
+0

++ n erhöht n um eins. Geben Sie (n + 1) stattdessen –

Antwort

1

n++ den Wert n ändert. Keiner deiner anderen Ausdrücke tut es. Die Tatsache, dass Sie n+1 bekommen, macht es ziemlich klar, dass die n++ ausgewertet wird, bevor alle anderen "Sachen" ausgegeben werden (und so n ist bereits inkrementiert).

+0

oh ich habe es. Danke –

0

Sie verwenden n und tun n++ (die tatsächlich n erhöht) innerhalb der gleichen Ausdruck. Dies ist undefined behavior.

Verwandte Themen