三道C语言笔试题

来源:百度知道 编辑:UC知道 时间:2024/05/23 21:22:04
1) 16位short int 类型所能表示的的数值下限与上限,如果用printf "%d,%d"将其打印出来,其结果是:___________.
2) signed char ch=127;
printf("%d",ch+127);的输出是_________.
3) 将int 变量a的第0位到第n位取反(右数最低位为0),其它位不变.
#define REVERSE(a,n) ____________.
希望同时给出必要的解释,非常感谢了!

1. 256 127
这里short被当作32位读取了
2. 254
ch+127后的返回值是int
3.(a) - (a) & (1 << ( (n) +1)) - 1 + ~( (a) & (1 << ( (n) +1)) - 1)
其中(1 << (n +1)) - 1是掩码
a & (1 << (n +1)) - 1是取出0到n位二进制数字所表达的十进制数字

1 -128 128
他们对应的二进制为01111111 100000000
2 254 字符占用一个字节,对应的范围为0-255
3 这个就比较麻烦了