예제 #1
0
파일: ch02.cpp 프로젝트: chinwe/CSAPP
//tadd_ok测试函数
void test_tadd_ok()
{
    printf("call test_tadd_ok() \n");

    int x = 10;
    int y = 20;
    int ret = tadd_ok(x, y);

    printf("tadd_ok(%u, %u) ret %d \n", x, y, ret);

    x = 0x7FFFFFFF;
    y = 0x7FFFFFFF;
    ret = tadd_ok(x, y);
    printf("tadd_ok(%d, %d) ret %d \n", x, y, ret);

    x = 0x80000000;
    y = 0x80000000;

    ret = tadd_ok(x, y);
    printf("tadd_ok(%d, %d) ret %d \n", x, y, ret);

    x = 0xFFFFFFFF;
    y = 0x80000001;

    ret = tadd_ok(x, y);
    printf("tadd_ok(%d, %d) ret %d \n", x, y, ret);

    printf("============================================================================\n");

}
예제 #2
0
int main(int argc, char *argv[])
{
   int x,y;
   
   x = 1;
   y = 1;
   printf("overflow: %s [%d + %d = %d]\n", tadd_ok(x,y) ? "false" : "true", x , y, x + y);

   x = -1;
   y = -1;
   printf("overflow: %s [%d + %d = %d]\n", tadd_ok(x,y) ? "false" : "true", x , y, x + y);

   x = INT_MAX;
   y = 1;
   printf("overflow: %s [%d + %d = %d]\n", tadd_ok(x,y) ? "false" : "true", x , y, x + y);

   x = -1;
   y = INT_MIN;
   printf("overflow: %s [%d + %d = %d]\n", tadd_ok(x,y) ? "false" : "true", x , y, x + y);

}
예제 #3
0
파일: main.c 프로젝트: ChaosJohn/CSAPP
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; 
}
예제 #4
0
int main(void)
{
  printf("%d : 1, 2\n", tadd_ok(1, 2));
  printf("%d : 0x7fffffff, 0x7fffffff\n", tadd_ok(0x7fffffff, 0x7fffffff));
  printf("%d : 0x40000000, 0x40000000\n", tadd_ok(0x40000000, 0x40000000));
  printf("%d : 0x40000000, 0x3fffffff\n", tadd_ok(0x40000000, 0x3fffffff));
  printf("%d : 0x40000000, 0x3ffffffe\n", tadd_ok(0x40000000, 0x3ffffffe));

  printf("%d : -1, -2\n", tadd_ok(-1, -2));
  printf("%d : 0x80000000, 0x80000000\n", tadd_ok(0x80000000, 0x80000000));
  printf("%d : 0xc0000000, 0xc0000000\n", tadd_ok(0xc0000000, 0xc0000000));
  printf("%d : 0xc0000000, 0xc0000001\n", tadd_ok(0xc0000000, 0xc0000001));
  printf("%d : 0xc0000000, 0xbfffffff\n", tadd_ok(0xc0000000, 0xbfffffff));

  printf("%d : 0xc0000000, 0\n", tadd_ok(0xc0000000, 0));
  printf("%d : 0x7fffffff, 0xc0000000\n", tadd_ok(0x7fffffff, 0xc0000000));

  printf("----------- buggy function test\n");
  printf("%d : 1, 2\n", buggy_tadd_ok(1, 2));
  printf("%d : 0x7fffffff, 0x7fffffff\n", buggy_tadd_ok(0x7fffffff, 0x7fffffff));
  printf("%d : 0x40000000, 0x40000000\n", buggy_tadd_ok(0x40000000, 0x40000000));
  printf("%d : 0x40000000, 0x3fffffff\n", buggy_tadd_ok(0x40000000, 0x3fffffff));
  printf("%d : 0x40000000, 0x3ffffffe\n", buggy_tadd_ok(0x40000000, 0x3ffffffe));

  printf("%d : -1, -2\n", buggy_tadd_ok(-1, -2));
  printf("%d : 0x80000000, 0x80000000\n", buggy_tadd_ok(0x80000000, 0x80000000));
  printf("%d : 0xc0000000, 0xc0000000\n", buggy_tadd_ok(0xc0000000, 0xc0000000));
  printf("%d : 0xc0000000, 0xc0000001\n", buggy_tadd_ok(0xc0000000, 0xc0000001));
  printf("%d : 0xc0000000, 0xbfffffff\n", buggy_tadd_ok(0xc0000000, 0xbfffffff));

  printf("%d : 0xc0000000, 0\n", buggy_tadd_ok(0xc0000000, 0));
  printf("%d : 0x7fffffff, 0xc0000000\n", buggy_tadd_ok(0x7fffffff, 0xc0000000));

  return 0;
}
예제 #5
0
int tsub_ok(unsigned x, unsigned y) {
    int UMax = 21;
    int sign = y == UMax ? -1 : 1;
    return sign * tadd_ok(x, -y);
}
예제 #6
0
파일: 2.32.c 프로젝트: AI-Ying/Deep
int tsub_ok(int x, int y)
{
    return tadd_ok(x, -y);
}