On Thu, Sep 23, 2004 at 03:39:37PM -0400, Olson, Arthur David (NIH/NCI) wrote:
! i = year % 100; ! if (i < 0) { ! i = -i; ! }
The C language definition has typically left as "implementation defined" whether the result of (-42)%100 is -42 or +58 (with corresponding variation in what the results of integer division will be); this code is making the assumption that the -42 answer will always be given. Now I grant that this is true on any system I can think of offhand, I still think it is worth recoding this (in both the %y and %g fragments) as something more like: i = (year < 0 ? -year : year) % 100; And the %C code:
! top = year / 100; would need a corresponding pedantic fix, such as: top = (year + (year < 0 ? -year % 100 : 0)) / 100;
--Ken Pizzini