选择D) -1, 65535:第一个值正确,但第二个值%u
会将-1
解释为一个非常大的无符号整数。
x是3,y是1
输出是结果是主函数中定义的m
和n
的初始值,即5和9。
选择d
设置变量a的bit 3
#include <stdio.h>
int main() {
int a = 15; // 假设a的初始值为15(二进制表示:1111)
int mask = 1 << 3; // 创建一个掩码,bit 3设置为1(二进制表示:0100)
a = a | mask; // 使用位或操作符将a的bit 3设置为1,其他位保持不变
printf("After setting bit 3: %d (binary: %04d)\n", a, a); // 输出a的值和其二进制表示(假设为4位显示)
return 0;
}
清除变量a的bit 3
#include <stdio.h>
int main() {
int a = 27; // 假设a的初始值为27(二进制表示:11011,但我们只关心低4位)
int mask = ~(1 << 3); // 创建一个掩码,bit 3设置为0(二进制表示:1011,然后取反得到1100)
a = a & mask; // 使用位与操作符将a的bit 3清除为0,其他位保持不变
printf("After clearing bit 3: %d (binary: %05d)\n", a, a); // 输出a的值和其二进制表示(假设为5位显示)
return 0;
}
程序会打印出“>6”。
第三行
答案是m(#include)和i(#define)。
p2 = a; // p2是一个指向字符数组的指针
c = (*p2)[1]; // 这将赋值'2'到c,因为'5'在a[1]的第二个位置
p3 = str; // p3是一个指向指针的指针
c = *(*(p3 + 0) + 1); // 这将赋值'b'到c,因为'b'在"abcdefg"的第二个位置
c = *(*(p3 + 1) + 4); // 这将赋值'5'到c,因为'5'在"123456789"的第五个位置