/* Determine whether arguments can be subtracted without overflow */ int tsub_ok(int x, int y) { char *bool[] = {" not ", " "}; int z = x - y; int a = x>>(w-1); int b = y>>(w-1); int c = z>>(w-1); int d = ((a|b)==-1) && ((a&b)==0) && ((a|c)==-1) && ((a&c)==0); printf("In %s, x = %d, \t y = %d, \t z = %d, \t x - y is%soverflow!\n", __func__, x, y, z, bool[d]); return d; } int main ( int argc, char *argv[] ) { tsub_ok(0, -1); tsub_ok(INT_MAX, 0); tsub_ok(INT_MAX, -1); tsub_ok(INT_MIN, 0); tsub_ok(INT_MIN, 1); tsub_ok(INT_MIN, 2); tsub_ok(INT_MIN + 1, 1); tsub_ok(INT_MAX - 1, -1); return EXIT_SUCCESS; } /* ---------- end of function main ---------- */
int main() { int x, y; printf("input x and y:"); scanf("%d, %d", &x, &y); printf("resutl = %d\n", tsub_ok(x, y)); return 0; }
int main(int argc, char **argv) { printf("%d\n", tadd_ok_char(-127, -4)); printf("%d\n", tadd_ok_char(-1, -2)); printf("%d\n", tadd_ok_char(-1, 7)); printf("%d\n", tadd_ok_char(126, 20)); printf("\n"); printf("%d\n", tadd_ok(INT_MIN, INT_MIN)); printf("%d\n", tadd_ok(INT_MIN, -4)); printf("%d\n", tadd_ok(-1, -2)); printf("%d\n", tadd_ok(-1, 7)); printf("%d\n", tadd_ok(INT_MAX, 20)); printf("%d\n", tadd_ok(INT_MAX, INT_MAX)); printf("\n"); printf("%d\n", tsub_ok(INT_MIN, INT_MIN)); printf("%d\n", tsub_ok(INT_MIN, -4)); printf("%d\n", tsub_ok(-1, -2)); printf("%d\n", tsub_ok(-1, 7)); printf("%d\n", tsub_ok(INT_MAX, 20)); printf("%d\n", tsub_ok(INT_MAX, INT_MAX)); printf("INT_MIN = %d\t -INT_MIN = %d\n", INT_MIN, (-INT_MIN)); return EXIT_SUCCESS; }
int main(){ printf("tsub_ok(0x00000001,0x80000000)=%d\n",tsub_ok(0x00000001,0x80000000)); printf("tsub_ok(0x80000000,0x00000001)=%d\n",tsub_ok(0x80000000,0x00000001)); printf("tsub_ok(0x80000000,0x80000000)=%d\n",tsub_ok(0x80000000,0x80000000)); return 0; }