Anzeige:
Ergebnis 1 bis 9 von 9

Thema: error: initializer expression list treated as compound expression

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.05.2004
    Ort
    Berlin
    Beiträge
    6

    error: initializer expression list treated as compound expression

    Hallo ihr,

    ich habe mich mal wieder mehr mit cpp beschaeftigt, habe aber einen
    Error, den ich mir nicht erklaehren kann:
    Das Programm
    Code:
    #include <iostream>
    using namespace std;
    
    int a;
    int b;
    int c;
    
    int test(int,int)
    {
      c=a+b;
    }
    
    int main()
    {
      cin >> a;
      cin >> b;
      
      int test(a,b);
      
      cout << c << endl;
    }
    wird vom Compiler mit
    Code:
    test2.cpp: In function `int main()':
    test2.cpp:18: error: initializer expression list treated as compound expression
    quittiert.
    Ich glaube dass das ein ziemlich dummer Fehler ist, habe aber mom. eine Blockade...

    Danke,
    Zorn

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Nimm das "int" in Zeile 18 weg.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    26.10.2004
    Beiträge
    26
    Die Definition Deiner Funktion "test" ist etwas seltsam:

    Code:
    int test(int a, int b)
    {
    //...
    }
    Müsste etwas richtiger sein, nicht?
    Je mehr man vom Programmieren lernt, um so klarer wird einem, dass man so gut wie gar nichts darüber weiß.

    "Was bin ich? Willst Du meinen Ort wissen, kannst Du nicht wissen, wie ob und wie schnell ich mich bewege. Willst Du wissen wie schnell ich unterwegs bin, kannst du nicht sagen, wo ich bin." :D

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.05.2004
    Ort
    Berlin
    Beiträge
    6

    Thumbs up

    Zitat Zitat von anda_skoa
    Nimm das "int" in Zeile 18 weg.

    Ciao,
    _
    Dankeschoen, das war der Fehler.
    :)

  5. #5
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Der Code ist total falsch. Richtg:
    Code:
    #include <iostream>
    using namespace std;
    
    int test(int a, int b)
    {
      return a + b;
    }
    
    int main()
    {
      int a = 0, b = 0, c = 0;
    
      cin >> a;
      cin >> b;
      
      c = test(a,b);
      
      cout << c << endl;
      
      return 0;
    }
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

  6. #6
    Registrierter Benutzer
    Registriert seit
    15.05.2004
    Ort
    Berlin
    Beiträge
    6

    Question

    hmm, ist dann mein Code wirklich total falsch? Ich meine jetzt kann
    ich ohne Probleme kompelieren und ausfuehren...
    :)

  7. #7
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    377
    Total falsch ist er nicht, es braucht nur folgende änderung in zeile 18:
    Code:
    c = test(a,b);
    Allerdings ist es besser, wenn man mit wenigen globalen variablen auskommt (siehe panzi)!
    Globale Variablen werden aber bereits im voraus initialisiert, ich glaube mit 0. C/C++ ist lange her leider
    Amilo D - 2,8 Ghz - ATI Radeon 9000
    Debian GNU/Linux 3.1 (Sarge)

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von ZoRn
    hmm, ist dann mein Code wirklich total falsch? Ich meine jetzt kann
    ich ohne Probleme kompelieren und ausfuehren...
    Nein, bis auf das "int" ist er schon richtig, aber nicht sehr schön.

    Sehr wahrscheinlich ist deine Intention genau das, was Panzi gepostet hat.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  9. #9
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Nun:
    Code:
    #include <iostream>
    using namespace std;
    
    // warum hier globale variablen??
    int a;
    int b;
    int c;
    
    // warum unbeannnte parameter und dann eine 
    // berechnug mit den _globalen_ variablen?
    int test(int,int)
    {
      c=a+b;
    // FEHLER: funktion hat den return wert int,
    // es fehlt aber das return statement
    }
    
    int main()
    {
      cin >> a;
      cin >> b;
      
    // FEHLER: hier deklarierst du eine Funktion?
    // sollte wohl c = test(a,b); heißen.
    // nur eigentlich könnte man, so wie du es programmiert hast,
    // auch fast so schreiben: test(); wenn du keine parameter
    // deklariert hättest, du verwendest sie ja eh nicht.
      int test(a,b);
      
      cout << c << endl;
    
    // FEHLER: wie oben: return fehlt.
    }
    Auf nen ordentlichen Compiler solte das garn nicht kompelieren!
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •