2016-04-18 10 views
0

Sorry, wenn das wie eine dumme Frage scheint. Ich bin sicher, dass Sie Jungs wissen, warum dies geschieht, aber in meinem Code für (C++) für die FunktionIn Funktionen eingebettete C++ - Funktionen laufen umgekehrt?

int result = calculateResult(getUserInput1(), getMathematicalOperation() , getUserInput2()) 

Die Funktion ‚getUserInput2()‘ wird zunächst anstelle von ‚getUserInput1() ausgeführt werden. Ist das normal für die Funktionen in C++ rückwärts ausgeführt werden, wenn sie mit einer anderen Funktion eingebettet sind?

Der vollständige Code ist unter

// SimpleCalculator.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 

#include <iostream> 

int getUserInput1() 
{ 
    std::cout << "Please enter an integer 1: "; 
    int value; 
    std::cin >> value; 
    return value; 
} 

int getUserInput2() 
{ 
    std::cout << "Please enter an integer 2: "; 
    int value; 
    std::cin >> value; 
    return value; 
} 

int getMathematicalOperation() 
{ 
    std::cout << "Please enter the operator you wish to use (1 = +, 2 = -, 3 = *, 4 = /): "; 
    int op; 
    std::cin >> op; 

    std::cout << "the operator number you chose is : " << std::endl << op << std::endl; 

    return op; 
} 

int calculateResult(int x, int op, int y) 
{ 
    if (op == 1) 
     return x + y; 
    if (op == 2) 
     return x - y; 
    if (op == 3) 
     return x * y; 
    if (op == 4) 
     return x/y; 

    return -1; 
} 

void printResult(int result) 
{ 
    std::cout << "Your result is : " << result << std::endl; 
} 
+2

Die Bewertungsreihenfolge der Parameter ist nicht spezifiziert, Sie sollten sich nie auf eine bestimmte verlassen. – molbdnilo

Antwort

3

Ja, es ist normal.

Genau genommen ist die Bewertungsreihenfolge nicht spezifiziert, und dies ist ein gemeinsames Ergebnis dieser Regel.

Es mag ein bisschen dämlich erscheinen, aber ich denke, es ist gut, weil es wirklich nach Hause hämmert, dass Sie sich nicht auf eine bestimmte Reihenfolge verlassen sollten, am allerwenigsten die Reihenfolge, die Sie ursprünglich angenommen haben.

Wenn Sie eine bestimmte Bewertungsreihenfolge benötigen, speichern Sie die Anrufergebnisse zunächst in Variablen.

+1

Ich hatte das ursprünglich gemacht, aber ich versuchte zu üben, indem ich sah, wie ich den Code verkürzen konnte und daher das obige passierte. Es zeigt mir, dass ich in Annahmen vorsichtig sein muss. –