Fun and games with Python vs C

I’m using Python to test the code generated by a C compiler.  Many of the tests are along the lines of:

a = 5
b = 10
result = run_c_code_for_add_in_emulator(a, b)
assert result == a + b

This works fine except when dividing integers with rounding. Under GCC on x86, -10030 is -3, but in Python -100//30 is -4.  Hmm.

This has the interesting side effect that in Python 2.5 -a/b != -(a/b).

The work-around seems to be to do it explicitly as int(float(a) / float(b)) is -3.

Michael Hope
Software Engineer