hanns: wieso funktioniert das : ungerade zahlen

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 ß??????

  1. 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/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    SELFCode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. 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

      1. 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/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        SELFCode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
        http://emmanuel.dammerer.at/selfcode.html
  2. 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 ;)

    1. 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.

      --
      Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
      Zufällige Hinweise:
      ------------------------
      Meine Homepage: http://www.riehle-web.com
      Tutorial: http://tutorial.riehle-web.com
      1. 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 ;)

  3. 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.

    --
    Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
    Zufällige Hinweise:
    ------------------------
    Antworten per E-Mail gibts hier nicht!