Calendar Functions
Guido van Rossum
guido at mcvax.uucp
Tue Sep 23 08:16:42 AEST 1986
Wouldn't Jim Cottrell love this:
#define leapyear(y) !((y)&3)
daysinmonth(m, y) {
if (m == 2) return 28 + leapyear(y);
return 30 + ((1&m) ^ (m>7));
}
Seriously, I believe that the original code, which applied the same rule
here showed a discrepancy between its seemingly clear coding style
(explaining every simple statement with a comment) and the 'trick' in
the algorithm (invert the parity of the month for months > 7).
In my eyes the solution which uses a table is the cleanest.
More information about the Comp.lang.c
mailing list