题目
以下程序的运行结果是() #include< stdio.h > int main() ( int a,b,d=241; a=d/100%9; b=(-1)&(-1); printf("%d,%d",a,b); return 0; ) A. 6,1B. 2,1C. 6,0D. 2,0
以下程序的运行结果是()
#include< stdio.h >
int main()
{
int a,b,d=241;
a=d/100%9;
b=(-1)&(-1);
printf("%d,%d",a,b);
return 0;
}
- A. 6,1
- B. 2,1
- C. 6,0
- D. 2,0
题目解答
答案
B
解析
本题考查C语言运算符的优先级和运算规则,特别是整数除法、取模运算以及按位与运算的应用。解题的关键在于:
- 正确计算表达式中的运算顺序,尤其是除法和取模的结合顺序;
- 理解按位与运算在负数情况下的结果,并注意运算符的实际作用。
计算变量 a 的值
表达式为 a = d / 100 % 9,其中 d = 241:
- 除法运算:
d / 100计算为241 / 100 = 2(整数除法舍去小数部分); - 取模运算:
2 % 9的结果为2; - 最终
a = 2。
计算变量 b 的值
表达式为 b = (-1) & (-1):
- 按位与运算:在二进制补码表示中,
-1的所有位均为1; - 按位与结果:
(-1) & (-1)的每一位均为1 & 1 = 1,因此结果仍为-1; - 选项矛盾:题目选项中未出现负数,但根据答案
B,b的值应为1,推测题目可能存在笔误,实际应为逻辑与运算&&(此时b = 1)。