On Mon, 2004-07-26 at 06:41, Sven Neumann wrote: > Hi, > > Jan Kratochvil <lace jankratochvil net> writes: > > > On Mon, 26 Jul 2004 10:43:21 +0200, Sven Neumann wrote: > > > Daniel Brockman <drlion deepwood net> writes: > > ... > > > > #define MOD(x, m) ((x) >= 0 ? (x) % (m) : (m) + (x) % (m)) > > ... > > > If at all it would have to be G_MOD(x). But I doubt that > > > the semantics of such a macro are obvious enough and that it would be > > > of general usefulness. > > > > I consider this macro as a generally used workaround of a bug in C standard. > > I intuitively expect the result of "x%m" will be 0..(m-1), not the C result > > of -(m-1)..(m-1). It has similiar position as G_N_ELEMENTS(). > > The result of "x%m" will be 0..(m-1) provided that you respect the > fact that the modulo operator is undefined on negative operands. The > behaviour is machine-dependent and you should simply avoid to use > modulo with signed variables. Are you sure about this? In my understanding, the C standard defines division as truncation towards zero. And then defines: a % b == a - b * (a / b) Regards, Owen
Attachment:
signature.asc
Description: This is a digitally signed message part