wieso funktioniert das : ungerade zahlen
hanns
- php
0 Marc Reichelt0 jeff
0 klawischnigg1 Dennis
0 Dennis
hallo
ich will testen, ob eine gebebene zahl ungerade bzw. gerade ist
folgendes funktioniert:
$x = 51;
if ( $x % 2 ) {
print "ungerade";
}else{
print "gerade";
}
Wieso? 51 lässt sich nicht ohne rest durch 2 teilen.
irgendwie müsste es doch heissen:
if ($x % 2 ohne Rest) ....
wieso funktioniert das oben??????????
noch eine dumme Frage:
die einfachen Anführungszeichen für php sind auf welcher taste?
die mit dem # oder die rechts neben dem ß??????
Hallo hanns,
ich will testen, ob eine gebebene zahl ungerade bzw. gerade ist
folgendes funktioniert:$x = 51;
if ( $x % 2 ) {
print "ungerade";
}else{
print "gerade";
}Wieso? 51 lässt sich nicht ohne rest durch 2 teilen.
irgendwie müsste es doch heissen:if ($x % 2 ohne Rest) ....
wieso funktioniert das oben??????????
"%" ist der Operator für eine Modulo-Divison, d.h. dir wird der Rest der Divison zurückgegeben.
Wird "0" zurückgegeben interpretiert PHP dies als "false", andernfalls als "true" (weil ein Wert zurückgegeben wurde).
Deshalb klappt dieser Code.
noch eine dumme Frage:
die einfachen Anführungszeichen für php sind auf welcher taste?
die mit dem # oder die rechts neben dem ß??????
Ersteres.
cu
Marc Reichelt || http://www.marcreichelt.de/
ich will testen, ob eine gebebene zahl ungerade bzw. gerade ist
folgendes funktioniert:
if ((1&$num)) { echo "$num ist gerade"; }
if (!(1&$num)) { echo "$num ist ungerade"; }
gr
jeff
Hallo jeff,
if ((1&$num)) { echo "$num ist gerade"; }
if (!(1&$num)) { echo "$num ist ungerade"; }
Ah, da merkt man doch gleich dass die Bit-Operatoren
manchmal sehr sinnvoll sein können... :-D
cu
Marc Reichelt || http://www.marcreichelt.de/
if ($x % 2 ohne Rest) ....
wieso funktioniert das oben??????????
Das funktioniert deshalb immer, weil Deine Abfrage keinen Sinn macht und als Ergebnis logisch falsch herauskommt, somit als Antwort immer "ungerade", auch wenn Du $x = 40 schreibst...
Wenn Du auf gerade, ungerade testen willst kannst Du das mit der Anweisung machen:
$ergebnis=($x/2 == intval($x/2))?"gerade":"ungerade";
die einfachen Anführungszeichen für php sind auf welcher taste?
die mit dem # oder die rechts neben dem ß??????
die auf der # Taste sind die richtigen einfachen Anführungszeichen ;)
Hi klawischnigg,
if ($x % 2 ohne Rest) ....
wieso funktioniert das oben??????????
Das funktioniert deshalb immer, weil Deine Abfrage keinen Sinn macht und als Ergebnis logisch falsch herauskommt, somit als Antwort immer "ungerade", auch wenn Du $x = 40 schreibst...
falsch, % ist ein korrekter Operator, der den Rest einer Division "zurückliefert".
Wenn Du auf gerade, ungerade testen willst kannst Du das mit der Anweisung machen:
$ergebnis=($x/2 == intval($x/2))?"gerade":"ungerade";
So gehts natürlich auch, aber warum so umständlich ;-)
MfG, Dennis.
falsch, % ist ein korrekter Operator, der den Rest einer Division "zurückliefert".
ja klar, ich hab nur drübergelesen und auf die Schnelle gesehen, daß er da in die Klammer dahinter noch irgendeinen Müll geschrieben hat ;)
Hi hanns,
$x = 51;
if ( $x % 2 ) {
print "ungerade";
}else{
print "gerade";
}Wieso? 51 lässt sich nicht ohne rest durch 2 teilen.
irgendwie müsste es doch heissen:
Richtig, der Rest wäre dann 1.
if ($x % 2 ohne Rest) ....
wieso funktioniert das oben??????????
Weil 1 true ist und 0 false ist, 10 % 2 => 0 => false, 11 % 2 => 1 => true.
noch eine dumme Frage:
die einfachen Anführungszeichen für php sind auf welcher taste?
die mit dem # oder die rechts neben dem ß??????
Die über der Raute (das ist das # *g*). Die anderen "Dinger" nennen sich Akzente, die stehen in etlichen spachen (z.B. Französisch) auf z.B. dem e, a oder so drauf: é, è, à ...
MfG, Dennis.