#include #include #include #include #include #include typedef signed short s16; #define tick_before(t1,t2) ((((s16)(t1))-((s16)(t2))) < 0) // This one is good // #define tick_before_2(t1,t2) ((s16)(((s16)(t1))-((s16)(t2))) < 0) // This one is good too #define tick_before_2(t1,t2) ((s16)((t1)-(t2)) < 0) // This does not work // #define tick_before_2(t1,t2) ((s16)(t1) - (s16)(t2) < (s16)0) int main() { unsigned short tick = 32816; unsigned short ed_tick = 32766; printf("tick %d ed->tick %d\n", tick, ed_tick); printf("old tick_before(tick, ed->tick): %d\n", tick_before(tick, ed_tick)); printf("new tick_before(tick, ed->tick): %d\n", tick_before_2(tick, ed_tick)); return 0; }