Eine Zahl quadrieren ohne arithmetischen Operator
-
Furble Wurble schrieb:
µ schrieb:
DirkB schrieb:
grinhilde schrieb:
ich glaube !5 hat den wert 0.
Warum glaubst du das?
Wissen, nicht glauben!
Himmel nochmal bestätige doch einfach, dass der Wert 0 stimmt.
Naja: nur zu sagen "0 stimmt" finde ich etwas billig.
Die Frage ist ja eh schon grenzwertig.@grinhilde: Hast Du's denn mal ausprobiert? Ausserdem ein schönes Beispiel, wie wichtig richtige Formatierung ist.
#include <stdio.h> int main(void){ int k=-1; switch(!5) { case 4: k=10; case 5: k=11; break; k=12; default: k=0; } printf("%d\n", k); }
Fangfrage: wie ist denn der Wert von
k
, wenn ich in Zeile 5
a)switch(4)
und
b)switch(5)
schreibe?
Schau noch mal in Deine Unterlagen zur switch-Anweisung, wenn's nicht klar ist.Um zu wissen was !5 ist habe ich folgendes gemacht:
#include <stdio.h> int main (void) { int wert = !5; printf("%i", wert); return 0; }
ich bekam die ausgabe 0
auf deine frage:
Wenn switch(4) -> k=10
Wenn switch(5) -> k=11Zu einer anderen Frage:
bei der Aufgabe:
Schreiben Sie eine C-Funktion, die die Summe zweier "float"-Werte (Parameter der Funktion) berechnet und als "double"-Wert zurückgibt.
Habt ihr geschrieben das ich die Aufgabe falsch verstanden habe. Leider ist mir nicht klar wie ich sie sonst umsetzten soll.
Zu meinen Unterlagen:
Sie bestehen aus Praktikumsaufgaben, welche immer funktioniert haben. Hier waren auch die Aufgaben anderes, wie ich finde verständlicher gestellt. Und einer tollen power point Präsentation des Profs.
Ich suche schon seit längeren auch nach einer tollen Literatur dazu, vorallem weil es sich um eine Kofferklausur handelt.
-
grinhilde schrieb:
Um zu wissen was !5 ist habe ich folgendes gemacht:
#include <stdio.h> int main (void) { int wert = !5; printf("%i", wert); return 0; }
ich bekam die ausgabe 0
Gut! That's the spirit!
Klar probierst Du es aus, wenn Du nicht sofort die Antwort weisst.
Bleibt die Frage, warum das so ist. Evtl. steht was in Deinen Unterlagen zum "logical negation operator !".
Ansonsten:
Das Ergebnis des Operators ist 0, wenn der Operand nicht gleich 0 ist, bzw. 1 wenn der Operand gleich 0 ist. Das Ergebnis hat den Typ int.
Alles klar?grinhilde schrieb:
auf deine frage:
Wenn switch(4) -> k=10Mal ausprobiert?
SeppJ hat auch schon mal eine Hervorhebung gemacht:
grinhilde schrieb:
Schreiben Sie eine C-Funktion, die die Summe zweier "float"-Werte (Parameter der Funktion) berechnet und als "double"-Wert zurückgibt.
Die Deklaration Deiner Funktion müsste also so aussehen:
double summe(float a, float b);
Richtig?
-
ist das nicht das gleiche nur umständlicher geschrieben?
so richtig sehe ich da keinen Unterschied.#include <stdio.h> int main (void) { float zahl1; float zahl2; double summe ; summe = zahl1 +zahl2; return 0; }
double summe(float a, float b);
ja ich hab es vorhin mit verschiedenen k ausprobiert.
-
grinhilde schrieb:
ist das nicht das gleiche nur umständlicher geschrieben?
so richtig sehe ich da keinen Unterschied.#include <stdio.h> int main (void) { float zahl1; float zahl2; double summe ; summe = zahl1 +zahl2; return 0; }
Wo ist denn hier die Funktion, die zwei Parameter vom Typ float entgegennimmt und ein Ergebnis vom Typ double zurückgibt?
-
Belli schrieb:
grinhilde schrieb:
ist das nicht das gleiche nur umständlicher geschrieben?
so richtig sehe ich da keinen Unterschied.#include <stdio.h> int main (void) { float zahl1; float zahl2; double summe ; summe = zahl1 +zahl2; return 0; }
Wo ist denn hier die Funktion, die zwei Parameter vom Typ float entgegennimmt und ein Ergebnis vom Typ double zurückgibt?
Ich denke auch, dass deren Abwesenheit einen großen(!) Unterschied macht.
Abgesehen davon ist das Programm oben ein Beispiel für so ziemlich das schlimmste, was Dir als C Programmierer passieren kann: "undefined beavior" (der Inhalt von
zahl1
undzahl2
ist nicht definiert.)Gut, dass Du mitdenkst und als mündiger Jungprogrammierer auftrittst, aber: Schreib einfach die blöde Funktion und gut ist's!
Übrigens ist k!=10 in Aufgabe a) oben. Ich denke Du hast es ausprobiert?!