← 华为硬件(逻辑)岗(19.09.04)

推荐答案 测试一下

main(){

A -7 B 2 C -4 D 4
单选题 中等 笔试真题单选

参考答案

我们分析这道题:main函数中定义int a=5, b=3; c = a - b >> 2; 然后printf输出c。注意运算符优先级:减法的优先级高于右移运算符。所以先计算a-b=2,然后将2右移2位。2的二进制是10,右移2位变成0。所以c=0。但选项中并没有0,可能题目有误?再仔细看题目:c=a-b&gt; &gt; 2; 这里可能表示右移运算符,但原文中出现了"&gt; &gt;",在HTML中表示大于号,但实际应该是">>"。但题目给出的选项是A -7 B 2 C -4 D 4。没有一个匹配0。也许我误解了,可能a和b是int类型,但右移操作符对负数有符号右移?但a-b=2是正数,右移仍是0。或者题目中可能有符号扩展?或者a=5,b=3, a-b=2,右移2位是0,打印为0。但选项没有0。再检查题目:c=a-b&gt; &gt; 2; 注意这里的"&gt; &gt;"可能是误写,实际是">>"?但也许题目意图是c = a - (b >> 2)? 如果那样,b>>2=3>>2=0,a-0=5,打印5,也不在选项。或者c = (a-b) >> 2? 那就是0。不对。 另一种可能:题目中a和b是int,但右移操作符在C语言中是算术右移还是逻辑右移取决于实现?但正数右移高位补0,结果0。或者可能题目中a和b是unsigned int?但定义了int。 再仔细看题目:c=a-b&gt; &gt; 2; 这里的"&gt; &gt;"可能表示两个大于号,即右移,但可能因为排版错误,实际上可能是"c=a-b>>2;" 但结果0。选项没有0。那可能我忽略了什么?a=5,b=3, a-b=2, 2>>2=0,c=0。如果printf输出%d,结果是0。但选项是-7,2,-4,4。没有0。也许题目中a和b是其他值?或者题目有误? 另一种常见考点:在C语言中,右移对于有符号整数,如果最高位是1则为算术右移(补符号位),但这里2是正数,补0。所以0。 也许题目是:c = a - b > > 2; 但可能实际上大于号是大于比较?比如c = (a - b) > 2? 那结果是0或1? a-b=2,大于2为假,0。还是0。 或者可能是c = a - b > 2? 然后赋值给c? 但语法不对。 再读题目原文:"c=a-b&gt; &gt; 2;" 这个"&gt; &gt;"在HTML中是大于号(>)的转义,所以实际是两个大于号,即右移。但选项无0。也许答案应该是0,但选项没有。也许题目有陷阱:a和b是int,但右移2位可能因为负数?但a-b是正数。或者可能a=5,b=3, 但a-b=2,2的二进制10,右移2位得到0,但printf输出c,c是int,0打印为0。 考虑另一种可能:题目中"Printf"写成了大写P,可能忽略。或者c变量未初始化?但已赋值。 或许考点是运算符优先级:减法的优先级高于右移,所以先减后右移。正确答案应该是0。但选项没有,说明我可能误解了表达式。也许表达式是c=a-b>>2; 但b>>2先计算?不,减法的优先级高于右移,所以是(a-b)>>2。没错。 另一种可能性:题目中">>"可能不是右移,而是两个大于号,但作为大于比较?比如c = a - b > > 2; 但语法错误。或者c = a - b > 2? 但那样是关系运算,结果0或1。a-b=2,2>2为假,0。还是0。 或者可能题目中a和b是不同数据类型?或者有符号位扩展?或者a和b是字符?不。 也许题目是c = a - (b >> 2)? 那么b>>2=0,a-0=5。不在选项。 也许题目中a=5,b=3, 但"a-b"可能被理解为a减去b的二进制?不。 注意选项有-7,2,-4,4。这些数字与5和3有关。例如,5-3=2,右移2位得0,但0不在。或者5+3=8,右移2得2,选项B是2。或者5-3=2,左移2得8?不。或者5-3的二进制补码?如果a和b是int,但右移操作符对于负数,如果是算术右移,可能得到-1?但a-b是正数。 考虑可能题目是:c = a - b >> 2; 但b>>2=0,a-0=5,不。或者c = a - (b >> 2) =5-0=5,不。 另一种思路:也许题目是c = a - b> > 2; 但"&gt; &gt;"是转义,实际是两个大于号,但可能因为编码问题,实际上是一个大于号和一个右移?或者像"c = a - b > > 2" 有两个大于号,但可能其中一个被误解?如果是"c = a - b > > 2" 语法错误。 或者可能是c = a - b > 2? 即比较a-b是否大于2,结果为0,也不在选项。 也许题目有笔误:常见题目中,有时候会考察:int a=5,b=3; c = a - b << 2; 左移2位,结果(5-3)=2,左移2得8,不在选项。或者c = a - b >> 2; 得0,不在。或者c = a - (b << 2)=5-12=-7,选项A是-7。如果是c = a - (b<<

涉及知识点

  • IC 基础
  • 数字电路
  • 设计与验证
← 上一题
登录后反馈错题
下一题 →