[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Please don't do this (code fragment)



Thomas Bushnell writes:

> Actually, the C standard does essentially guarantee two's complement
> arithmetic.  It specifies integer overflow behavior and
> signed/unsigned conversion behavior exactly.

It does for unsigned integers, but for signed integers overflow is
undefined behaviour.  The clearest statement of that is 3.4.3, albeit
in an example:

   3.4.3
 1 undefined behavior behavior, upon use of a nonportable or erroneous
   program construct or of erroneous data, for which this International
   Standard imposes no requirements
 2 NOTE Possible undefined behavior ranges from ignoring the situation
   completely with unpredictable results, to behaving during translation
   or program execution in a documented manner characteristic of the
   environment (with or without the issuance of a diagnostic message),
   to terminating a translation or execution (with the issuance of a
   diagnostic message). 
 3 EXAMPLE An example of undefined behavior is the behavior on integer
   overflow.

-- 
Olaf Weber

               (This space left blank for technical reasons.)



Reply to: