Bedingter Operator



  • Hallo

    Folgendes funktioniert einwandfrei:

    int fak(int n) {
    	if(n<=1) return(1);
    	else return(n*fak(n-1));
    }
    

    So jedoch nicht:

    int fak(int n) {
    	(n <= 1) ? return(1) : return(n*fak(n-1));
    }
    

    Der Compiler gibt folgende Fehlermeldung aus:

    main.cpp: In function int fak(int)': main.cpp:15: error: expected primary-expression before "return" main.cpp:15: error: expected:' before "return"
    main.cpp:15: error: expected primary-expression before "return"
    main.cpp:15: error: expected `;' before "return"

    Kann mir das jemand vll. erklären?

    Vielen Dank. 😃

    Gruss,
    LEARNcpp



  • int fak(int n) {
    	return (n <= 1) ? (1) : (n*fak(n-1));
    }
    

    In ?: dürfen nur (Rechen-)Ausdrücke gemacht werden. Das return-Statement ist kein Ausdruck.



  • Ach so ist das 🙂
    Vielen Dank volkard 😃

    Gruss,
    LEARNcpp


Anmelden zum Antworten