问题
单项选择题
有以下程序:
#include <stdio.h>
main()
char a=4;
printf("%d\n", a=a<<1);
程序的运行结果是( )。
A) 40
B) 16
C) 8
D) 4
答案
参考答案:C
解析: 本题考查的是左移运算。因为计算机中的数据都是以二进制形式存放,而位移运算的实质就是将这些二进制左移或右移若干位。如果不考虑溢出,每左移1位其实就等价于对原数乘以2,右移1位就等价于对原数除以2。这就好像在现实的十进制中,如果我们将100左移1位,结果是1000,是不是大了10倍将100右移1位,结果是10,结果等于十分之一了。所以,本题中a<<1的结果是4*2=8,因为8不会超过char类型的表示范围,所以输出结果为8,应该选择C)。