Entwickler-Ecke

C# - Die Sprache - If-Anweisung funktioniert nicht


Stratego - Fr 01.07.11 18:22
Titel: If-Anweisung funktioniert nicht
Hallo bei diesem Code funktioniert irgendwas nicht, es ist zwar nichts falsch aber bei der Ausgabe macht der das nicht nur wenn Jahrc 0 ist, zwar nur bei Monthtry 1, 2 aber Jahrc ignoriert er dabei wo ist das problem?


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
int Jahrc = Jahrb % 4;

           

             if (Monthtry == (1 | 2) && Jahrc == 0  );    // Hier Schaltjahr!
            {
               Month = Month - 1;
            

            }


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


jaenicke - Fr 01.07.11 18:43

Das Zeichen | ist eine bitweise Verknüpfung...
Du kannst nicht fragen "gleich das oder das", da wird das oder als oder zuerst ausgewertet.

Schreib einmal aus was du möchtest und klammere alles, dann klappt das auch.


Stratego - Fr 01.07.11 19:05

wie meinst du das mit "ausschreiben" ich verstehe es leider immer noch nicht...


jaenicke - Fr 01.07.11 19:08


C#-Quelltext
1:
2:
if (((Monthtry == 1) || (Monthtry == 2)) && (Jahrc == 0))
  Month -= 1;


Stratego - Fr 01.07.11 20:32

Vielen dank Jetzt gehts richtig


jaenicke - Fr 01.07.11 20:36

Dass es nicht reicht zu prüfen, ob das Jahr durch 4 teilbar ist, wenn du wissen willst, ob es sich um ein Schaltjahr handelt, ist dir aber klar, oder? ;-)


Stratego - Fr 01.07.11 23:00

Wieso wenn 0 rauskommt und ich die ausnahmen 17 ,18,19 jahrhundert mitnehme. Außerdem ist das ja nur in den ersten beiden Monaten...


jaenicke - Sa 02.07.11 07:05

Wozu Ausnahmen? ;-)

C#-Quelltext
1:
2:
if (((Jahrb % 4) == 0) && (!((Jahrb % 100) == 0) || ((Jahrb % 400) == 0)))
  // Schaltjahr