Chris Angelico <ros...@gmail.com> writes: > On Thu, Apr 9, 2015 at 11:57 PM, Alain Ketterlin > <al...@dpt-info.u-strasbg.fr> wrote: >> Because, in: >> >> z = x+y; // all signed ints >> if ( z < x ) >> ... >> >> either there was no overflow (and the condition is false), or there was, >> and the result is undefined, i.e., "z<x" can be considered false also. > > Do you mean "all unsigned ints" here? Because if y is negative, the > condition will be true without overflow. If you didn't, then I'm > puzzled as to where the undefined behaviour is coming from.
Ouch, you're right, I tried to stick with Marko's example and forgot the basics. I meant "signed ints", but the "removable" condition should be something like: if ( x>0 && y>0 && z<x ) ... i.e., some condition that is never true (either false or undefined). Thanks for the correction. If the variables are all unsigned ints, the potential overflow has a well-defined meaning, and the code is correct and doesn't trigger undefined behavior. This was Marko's initial example. -- Alain. -- https://mail.python.org/mailman/listinfo/python-list