Frage zu C

08/08/2014 14:54 -TaZzy-#1
Hallo allerseits, ich habe eine Frage.

Quote:
Wenn sich also die letzten zwei Stellen der Jahreszahl (jahr%100) durch 4 teilen lassen (!((jahr%100)%4)) UND das Jahr sich nicht durch 100 teilen lässt (jahr%100) ODER es durch 400 teilbar ist (!(jahr%400)), dann wird die Bedingung wahr.
Den Teil verstehe ich nicht ganz. % steht doch für Division mit Rest, richtig (zumindest hier)? Warum steht dort "zwei Stellen der Jahreszahl (jahr%100)"? Ist das nicht schon eine Division? Und wie genau funktioniert "(!((jahr%100)%4))"? Ist das nicht eine doppelte Division (durch 100 und durch 4)? Macht diese dann nicht die zweite Division (jahr%100) überflüssig?

Hier der Code:
08/08/2014 16:04 Actidnoide#2
Quote:
Originally Posted by -TaZzy- View Post
Den Teil verstehe ich nicht ganz. % steht doch für Division mit Rest, richtig (zumindest hier)? Warum steht dort "zwei Stellen der Jahreszahl (jahr%100)"? Ist das nicht schon eine Division? Und wie genau funktioniert "(!((jahr%100)%4))"? Ist das nicht eine doppelte Division (durch 100 und durch 4)? Macht diese dann nicht die zweite Division (jahr%100) überflüssig?
% ist in den meisten Sprachen mit C Syntax der Modulo Operator. Dieser fuehrt eine Division durch und gibt den Rest zurueck (1956%100 = 56). Und das sind die beiden letzten Stellen des Jahres.
zahl%4 ergibt null, wenn kein Rest entsteht, was bedeutet, dass die Zahl durch 4 teilbar ist.
Dann ist da noch der Not Operator !, der den Zustand umdreht (vorher null : false danach true).

!((jahr%100)%4) ist also wahr, wenn die letzten beiden Ziffern des Jahres durch 4 teilbar sind.
08/08/2014 18:36 -TaZzy-#3
Quote:
Originally Posted by Actidnoide View Post
% ist in den meisten Sprachen mit C Syntax der Modulo Operator. Dieser fuehrt eine Division durch und gibt den Rest zurueck (1956%100 = 56). Und das sind die beiden letzten Stellen des Jahres.
zahl%4 ergibt null, wenn kein Rest entsteht, was bedeutet, dass die Zahl durch 4 teilbar ist.
Dann ist da noch der Not Operator !, der den Zustand umdreht (vorher null : false danach true).

!((jahr%100)%4) ist also wahr, wenn die letzten beiden Ziffern des Jahres durch 4 teilbar sind.
Tolle Erklärung, vielen Dank! Versteht man auf Anhieb.