Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : error: initializer expression list treated as compound expression



ZoRn
14-11-2004, 14:04
Hallo ihr,

ich habe mich mal wieder mehr mit cpp beschaeftigt, habe aber einen
Error, den ich mir nicht erklaehren kann:
Das Programm


#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


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

anda_skoa
14-11-2004, 14:24
Nimm das "int" in Zeile 18 weg.

Ciao,
_

MikeG
14-11-2004, 14:24
Die Definition Deiner Funktion "test" ist etwas seltsam:


int test(int a, int b)
{
//...
}


Müsste etwas richtiger sein, nicht?
;)

ZoRn
14-11-2004, 16:33
Nimm das "int" in Zeile 18 weg.

Ciao,
_
Dankeschoen, das war der Fehler.

panzi
14-11-2004, 21:16
Der Code ist total falsch. Richtg:
#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;
}

ZoRn
16-11-2004, 12:37
hmm, ist dann mein Code wirklich total falsch? Ich meine jetzt kann
ich ohne Probleme kompelieren und ausfuehren...
:confused:

nul
16-11-2004, 14:33
Total falsch ist er nicht, es braucht nur folgende änderung in zeile 18:

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 :(

anda_skoa
16-11-2004, 16:22
hmm, ist dann mein Code wirklich total falsch? Ich meine jetzt kann
ich ohne Probleme kompelieren und ausfuehren...
:confused:

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,
_

panzi
16-11-2004, 22:15
Nun:
#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!