diff --git a/site/content/chapter2/code/tsub-ok.c b/site/content/chapter2/code/tsub-ok.c index 6a220fa4..b0e9777f 100644 --- a/site/content/chapter2/code/tsub-ok.c +++ b/site/content/chapter2/code/tsub-ok.c @@ -6,26 +6,16 @@ #include /* Determine whether arguments can be substracted without overflow */ -int tsub_ok(int x, int y) -{ - int res = 1; - - (y == INT_MIN) && (res = 0); - // if (y == INT_MIN) res = 0; - +int tsub_ok(int x, int y) { int sub = x - y; - int pos_over = x > 0 && y < 0 && sub < 0; + int pos_over = x >= 0 && y < 0 && sub < 0; int neg_over = x < 0 && y > 0 && sub > 0; - - res = res && !(pos_over || neg_over); - - return res; + return !(pos_over || neg_over); } -int main(int argc, char* argv[]) { - assert(!tsub_ok(0x00, INT_MIN)); - assert(tsub_ok(0x00, 0x00)); - return 0; +int main(int argc, char *argv[]) { + assert(!tsub_ok(0x00, INT_MIN)); + assert(tsub_ok(-1, INT_MIN)); + assert(tsub_ok(0x00, 0x00)); + return 0; } - -