C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下。

设有定义:char a=3,b=6,c;则执行完语句c=(a^b)<<2后,c的值为( )。
① 034 ② 07 ③ 01 ④ 024


^是按位异或运算符,需要把a和b的值化为二进制数后进行按位异或就能得到答案。


题中,a=3 ,二进制为:0011;b=6,二进制值为:0110。所以(a^b)按位异或后的值为0101也就是5,左移两位后值(二进制)为:010100 也就是 :20

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-19
【正确答案】
c=20

【解答分析 】 ^是按位异或运算符,需要把a和b的值化为二进制数后进行按位异或就能得到答案。
题中,a=3 ,二进制为:0011;b=6,二进制值为:0110。所以(a^b)按位异或后的值为0101也就是5,左移两位后值(二进制)为:010100 也就是 :20

【代码验证】
#include<iostream>
using namespace std;
int main(){
char a=3,b=6,c;
c=(a^b)<<2;
cout<<"c="<<(int)c<<endl;
return 0;
}

【输出结果】c=20
相似回答