Bekomme kein Rückgabewert (C)
-
Hallo,
ich habe testweise fürs üben ein C Programm geschrieben,
ich bekomme jedoch kein Rückgabewert, ich weiß auch nicht wo ich falsch mache..Anbei mein Programm:
bool sign(int x) { if (x>0) return 1; if (x=0) return 0; if (x<0) return -1; } int main() { int x=1; sign(x); }
Danke im voraus
-
1. Schau Dir Zeile 5 nochmal genau an - ist das wirklich, was Du willst?
2. Du meinst in Zeile 15? Doch, da bekommst Du einen Rückgabewert - Du machst nur nichts damit. Du solltest ihn einer Variablen zuweisen oder ihn ausgeben lassen, wenn der Rückgabewert Dich interessiert.
-
Hast nur vergessen, das Ergebnis dann auch in einer Variablen aufzufangen und dann auszugeben.
int main() { int x=1; bool b=sign(x); ptintf("%d",b); }
-
Danke euch, müsste natürlich x==0 sein, da ansonsten eine initialisierung..
Ich dachte return gibt ein Wert als Ausgabe zurück, man muss doch mit printf arbeiten..
Die Ausgabe funktioniert jetzt, nur die Minus 1 gibt er nicht aus,
obwohl integer?bool sign(int x) { if (x>0) return 1; if (x==0) return 0; if (x<0) return -1; } int main() { int x=(-5); bool b=sign(x); printf("%i",b);
PS: Ich habe die -5 in klammern gesetzt, kein Wirkung..
-
Naja, eine -1 in einen bool zu stopfen, ist schon irgendwie ein gewagtes unterfangen.
bool sollte eigentlich nur false=0 oder true=1 sein.
ein sign würde prima in einen int passen.
-
Danke
-
...
-
dslpro schrieb:
PS: Ich habe die -5 in klammern gesetzt, kein Wirkung..
Die Klammern um Minuszahlen im Mathe-Unterricht haben einen anderen Zweck.
Zuerstmal machen sie im 5. Schuljahr deutlicher, was da passieren soll
x = (-3) - (-2)
y = (+3) - (-2)
z = (-3) * (+2)
Das braucht man in C und aucf dem Taschenrechner nicht.
x = -3 - -2
y = +3 - -2
z = -3 * +2
Aber aufpassen, daß der Parser nicht ++ oder -- liest.
x = -3--2//geht nicht
y = +3--2//geht nicht
z = -3*+2//geht
In der normalen Mathe-Schreibweise ist es verboten, zwei Operatoren hintereinanderzuschreiben, darum setzt man Klammern. Die tun auch in C verhindern, daß aus Versehen -- oder ++ gelesen werden.
x = -3-(-2)
y = +3-(-2)
z = -3*(+2)
C hat gar keine Schmerzen mit
x = - - + - + + - + - - + - + + + - + - - + - 5 * - + + - - + 3
-
dslpro schrieb:
Ich dachte return gibt ein Wert als Ausgabe zurück, man muss doch mit printf arbeiten..
Fast ganz genau. return gibt ein Ergebnis zurück. Zurück an den Aufrufenden der Funktion.
dslpro schrieb:
Die Ausgabe funktioniert jetzt, nur die Minus 1 gibt er nicht aus, obwohl integer?
Hihi. gibt aus auf den Bildschirm.
Zurückgeben ist nicht ausgeben.
dslpro schrieb:
Ich dachte return gibt ein Wert als Ausgabe zurück, man muss doch mit printf arbeiten..
Besser wäre
dslpro++ schrieb:
Ich dachte return gibt ein Wert als Rückgabe zurück, man muss doch mit printf arbeiten, um die Ausgabe dann auszugeben.
-
...
-
Jupp.
-
Ich danke euch vielmals für die ausführlichen Erklärungen. .