21.C
22.D
23.B 5先出栈表示1,2,3,4已经入栈了,5出后4出,但之后想出1得先让3,2先后出栈,所以 B 不可能
24.10,12,120
25.2,5
26.可能会出现段错误,因为A[255]只有255个元素,循环0-255,有256个元素,越界访问数组可能会出现段错误
27.0,41
28.(a)? (b)320
29.a=a+b;b=a-b;a=a-b;
30.p1+5=0x801005;p2+5=0x810028;
31.C
32.45
33.D
34.X=10,Y=6
35.5,9
36.C
37.
void set_BIT3()
{
a |= (0x0001<<3);
}
void clean_BIT3()
{
a &= ~(0x0001<<3);
}
38.
int main(void)
{
int *p=(int *)0x67a9;
*p=0xaa66;
return 0;
}
39. puts(">6"),因为有符号int 与无符号 int 参与运算时,会将有符号转换为无符号参与运算,-20转换成无符号数大于6,所以+6也大于6
40.7
41.h,g,c
42.(1)10^3,10^6,2.5*10^6,5*10^-8(2)10^-9,10^-6,10^-3(3)8,1024,1024
43.c,b,h,b,c,i,j
44.
char a[2][10]={"abcdefg","123456789"};
const char *str[2]={"abcdefg","123456789"};
int main(int argc, const char *argv[])
{
char *p1;
char (*p2)[10];
const char **p3;
char c;
p1=a[0];//把a的第一个元素的地址代入p1
c=*(p1+1);
c=*(p1+14);
p2=a;//把a的第一行的地址代入p2
c=*(*(p2)+1);
c=*(*(p2+1)+4);
p3=&str;//把str的地址代入p3
c=*(p3+1);
c=*(p3+14);
return 0;
}