CSAPP第二章家庭作业2.61

题目

2.61.1

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#define true 1
#define false 0

//错误:使用了禁用的运算
// int check(int x) {
// //A
// if (x == 0xFFFFFFFF) return true;
// //B
// if (x == 0) return true;
// char *p = (char *) &x;
// int n = sizeof(x);
// //C
// if (*p == 0xFF) return true;
// //D
// while (n --) p ++;
// if (*p == 0) return true;

// return false;
// }

int check(int x) {
return
//A
!(~x) ||
//B
!x ||
//C
!((~x) & 0xFF) ||
//D
!(x & 0xFF000000);
}
int main() {
printf("%d\n", check(0x07000000));
return 0;
}