#if mit geschweiften Klammern



  • Guten Tag,

    liebe User ich hätte mal eine Frage und zwar habe ich folgendes Programm geschrieben:

    /*Dieses Beispiel soll mein Wissen vertiefen in Funktionen 
      bzw. wiederholen */
    
    #include<stdio.h>
    #include<stdlib.h>
    
    #define PLUS      4    
    #define MINUS     3
    #define MAL       2
    #define DURCH     1
    
    int berechnung_plus(int wert1, int wert2){
        int ergebnis;
        ergebnis = wert1+wert2;
        }
    
    int berechnung_minus(int wert1, int wert2){
        int ergebnis;
        ergebnis = wert1-wert2;
        }
    
    int berechnung_mal(int wert1, int wert2){
        int ergebnis;
        ergebnis = wert1*wert2;
        }
    
    int berechnung_durch(int wert1, int wert2){
        int ergebnis;
        ergebnis = wert1/wert2;
        }
    
    main(){
           int wert1, wert2, ergebins, entscheidung;             
    
           printf("\n\t\t A d d i t i o n s p r o g r a m m\n");
           printf("1. fuer Plus.\n");
           printf("2. fuer Minus.\n");
           printf("3. fuer Mal.\n");
           printf("4. fuer Durch.\n");
           printf("Bitte geben sie ein: ");
           scanf("%i", &entscheidung);
    
           #if PLUS
                   printf("Bitte geben sie einen Wert ein: ");
                   scanf("%i", &wert1);
                   printf("Bitte geben sie einen 2. Wert ein: ");
                   scanf("%i", &wert2);
                   berechnung_plus(wert1, wert2);
           #elif MINUS
                 printf("Bitte geben sie einen Wert ein : ");
                 scanf("%i", &wert1);
                 printf("Bitte geben sie einen 2 Wert ein : ");
                 scanf("%i", &wert2);
                 berechnung_minus(wert1, wert2);
           #elif MAL
                 printf("Bitte geben sie einen Wert ein : ");
                 scanf("%i", &wert1);
                 printf("Bitte geben sie einen 2 Wert ein : ");
                 scanf("%i", &wert2);
               berechnung_mal(wert1, wert2);
           #elif DURCH
                 printf("Bitte geben sie einen Wert ein : ");
                 scanf("%i", &wert1);
                 printf("Bitte geben sie einen 2 Wert ein : ");
                 scanf("%i", &wert2);
                 berechnung_durch(wert1, wert2);
           #else
                printf("Sie haben keine der angegebenen Zahlen eingegeben: ");
           #endif
    
           system("PAUSE");
           return 0;
           }
    

    Und zwar gibt es eine Möglichkeit das ich z.B meine #if Anweisungen etwa so schreibe???

    #if PLUS{
                   printf("Bitte geben sie einen Wert ein: ");
                   scanf("%i", &wert1);
                   printf("Bitte geben sie einen 2. Wert ein: ");
                   scanf("%i", &wert2);
                   berechnung_plus(wert1, wert2);
    }
    

    Wäre so etwas möglich?????



  • Mal einen Gegenfrage: Was meinst Du, macht #if, worin besteht der Unterschied zu if, und willst Du nicht eigentlich letzteres verwenden?



  • Ich glaube, du hast Präprozessordirektiven # nicht verstanden;
    vielleicht hilft eine Frage: warum liest du die Variable <entscheidung> ein und benutzt sie nicht?



  • ... und warum geben deine Berechnungen keinen Wert zurück?



  • ... und wieso steht vor main weder int noch void?



  • sryyy schrieb:

    ... und wieso steht vor main weder int noch void?

    Es ist zwar antiquierter Stil aber in C89 durchaus erlaubt, das int vor main wegzulassen. Die Funktion gibt dann per Default int zurück.

    void main dagegen wäre schlicht falsch.



  • wieso ist void main() falsch?

    entschuldigung für die frage, aber ich beschäftige mich erst seit kurzem mit c und bin mir eigtl sicher, dass ich void main() schon gelesen hab.

    danke schonmal
    Mfg Domi



  • dkra89 schrieb:

    wieso ist void main() falsch?

    Weil der C Sprachstandard dies NICHT definiert, d.h. es ist undefiniertes Verhalten und somit Schrott (Ausnahme bilden auch keine Buchautoren, habilitierte Leute in Berlin usw.)



  • dkra89 schrieb:

    wieso ist void main() falsch?

    Aufgrund dieser Stelle des C-Standards:

    ISO/IEC 9899:1999 5.1.2.2.1 (1) schrieb:

    The function called at program startup is named main. The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters:

    int main(void) { /* ... */ }
    

    or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared):

    int main(int argc, char *argv[]) { /* ... */ }
    

    or equivalent;9) or in some other implementation-defined manner.

    1. Thus, int can be replaced by a typedef name defined as int, or the type of argv can be written as char ** argv, and so on.


  • Dazu sollte nicht unerwähnt bleiben, das das mit

    void main()
    

    auch öfter in dem MSDN steht.

    Ist ja hier im Forum der meist empfohlene Compiler unter Windows, der sich an dem MSDN orientiert 😃



  • f.-th. schrieb:

    Dazu sollte nicht unerwähnt bleiben, das das mit

    void main()
    

    auch öfter in dem MSDN steht.

    Ist ja hier im Forum der meist empfohlene Compiler unter Windows, der sich an dem MSDN orientiert 😃

    😮 MSDN ist ein Compiler? Wusste ich garnicht... Du meintest wohl Visual Studio, obwohl es eine IDE und kein Compiler ist.



  • Ich dachte das wäre klar 😃

    MSDN – das Microsoft Developer Network
    hier ein Link für die die es nicht kennen:
    http://msdn.microsoft.com/de-de/default.aspx

    Und wird von Microsoft kein Compiler mit dem Visual-Zeug angeboten 😕


Log in to reply