1.【单选题】
int a {1000},b;
b=a<<2;
b=?
A. 1000
B. 2000
C. 4000
解析: b=a<<2;属于位运算。在二进制下,向左移动两位,相当于乘以2的二次方。所以b = 4000,选C。
2.【单选题】
int a {1000},b;
b=a>>2;
b=?
A. 250
B. 2000
C. 4000
解析:这题和第一题类似,向右移动两位,相当于除以2的2次方,所以b = 250,选A。
3.【单选题】
unsigned int a {0x2838};
a&=0xFF00;
a = ?
A. 2800
B. 0x2800
C. 0
解析:a&=0xFF00; 解释为:将a
的初始值0x2838f
(二进制表示为0010 1000 0011 1000 1111
)与0xFF00(
二进制表示为1111 1111 0000 0000)
进行位与操作。
位与操作的规则是:只有当两个相应的二进制位都为1时,结果位才为1。否则,结果位为0。因此,执行完a &= 0xFF00;后,a的值将是0x2800,选B。
4.【单选题】
char a{'A'};
char b;
b=2+a++;
std::cout<<b;
控制台显示的内容是?
A. C
B. B
C. A
解析:首先,字符a
被初始化为字符'A'
,在ASCII编码中,'A'
的值是65。 b = 2 + a++; a是后置递增,结果b等于67,代表字符为 C,所以选A。
5.【单选题】
int a{10},b{1},c;
c=b+++a;
c=?
A. 10
B. 11
C. 12
解析:c=b+++a; 考察了运算符的优先级。有两种写法,c = b++ + a , c = b + ++a,但是后置递增的优先级要大于前置递增,所以为 c = b++ + a; 结果c = 11,选B。
6.【单选题】
int a {10};
a = a << 2 + 1;
a = ?
A. 41
B. 21
C. 80
解析:a = a << 2 + 1; 考察了运算符的优先级,加号的优先级要大于位移运算符,所以a = a << 2 + 1; 为 a = a << 3; 向左移3位,等于 10 乘以 2的3次方位80,选C。
7.【单选题】
auto a {100.0};
std::cout << typeid(a).name();
控制台显示的是?
A.double
B.float
C.int
解析:答案选A。float类型后缀要加f字符。
8.【单选题】
std::cout<<(int)'A,;控制台显示内容是?
A. 65
B.A
C.B
解析:在ASCII编码中,'A'
的值是65,所以选A。
9.【单选题】
int a {255};
std::cout<<std::hex;
std::cout<<a;
控制台显示内容是?
A.255
B.FF
C.0xFF
解析:std::cout<<std::hex;表示整数 a
的值(255)会以十六进制的形式输出。在十六进制中,255 表示为 ff
。所以,答案选B。
10.【单选题】
int a;
std::cin>>std::oct;
std::cin>>a;
用户输入了10
a=?
A. 8
B. 10
C.16
解析:std::cin>>std::oct;表示输入形式为八进制10,此时a = 8,答案为A。