viod main() {char a=1,b=2; char c=a^b<<2; printf("\n%d",c); }
答案:3 悬赏:40
解决时间 2021-02-12 03:46
- 提问者网友:锁深秋
- 2021-02-11 03:30
viod main() {char a=1,b=2; char c=a^b<<2; printf("\n%d",c); }
最佳答案
- 二级知识专家网友:不如潦草
- 2021-02-11 04:53
a=1 其二进制码为 00000001
b=2其二进制吗为 00000010
^是异或运算(二进制码的)二进制码相同为0 不同为1
<<是二进制码的左移运算就是将二进制码的1向左移动n位
<<运算的优先级比^高
所以 c=a^b<<2
就是说 先把b的二进制码(00000010)左移两位 00001000
然后与a(00000001)进行异或运算 得 00001001
这个二进制码转换为10进制就是9
b=2其二进制吗为 00000010
^是异或运算(二进制码的)二进制码相同为0 不同为1
<<是二进制码的左移运算就是将二进制码的1向左移动n位
<<运算的优先级比^高
所以 c=a^b<<2
就是说 先把b的二进制码(00000010)左移两位 00001000
然后与a(00000001)进行异或运算 得 00001001
这个二进制码转换为10进制就是9
全部回答
- 1楼网友:思契十里
- 2021-02-11 06:27
按位异或。
相同为零,不同为一。
任何数与全0异或,值不变。
任何数与全1异或,值取反。
任何数与自己异或,值为0。
例如char a;
a^0xff值为a的反
a^0x0 值为a不变
又如int a;
a^0xffffffff 值为a的反
a^0x0值为a不变
左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,
高位丢弃,低位补0。
运行过程: <<比^的优先级别高所以先b<<2
b= 0000 0010 b<<2 后b= 0000 1000b=8
然后a^b 最后赋值给c,按位异或过程如下
0000 0001a=1
0000 1000 b=8
0000 1001c=9
相同为零,不同为一。
任何数与全0异或,值不变。
任何数与全1异或,值取反。
任何数与自己异或,值为0。
例如char a;
a^0xff值为a的反
a^0x0 值为a不变
又如int a;
a^0xffffffff 值为a的反
a^0x0值为a不变
左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,
高位丢弃,低位补0。
运行过程: <<比^的优先级别高所以先b<<2
b= 0000 0010 b<<2 后b= 0000 1000b=8
然后a^b 最后赋值给c,按位异或过程如下
0000 0001a=1
0000 1000 b=8
0000 1001c=9
- 2楼网友:纵马山川剑自提
- 2021-02-11 05:28
主函数其实也是一个函数,当你把它看成一个普通的函数时
那筢它有一个反回值,还有一个形参
void main() 表示反回值类形为无反回值,括号内按理说填的是形参,但这时没有形参的传入,因此也是空的可以填上void 也可不填
main() 也同上,其实其前也有一个void只不过可以省略不写
int main(void)这个是一个标准的函数形,表示着它有一个返回值是ing整型的,因此你在程序的结尾要加上一个return 0;表示反回值为0才可以当然那个0可以是其它整数。而括号内的void也表示没有参数的传入
那筢它有一个反回值,还有一个形参
void main() 表示反回值类形为无反回值,括号内按理说填的是形参,但这时没有形参的传入,因此也是空的可以填上void 也可不填
main() 也同上,其实其前也有一个void只不过可以省略不写
int main(void)这个是一个标准的函数形,表示着它有一个返回值是ing整型的,因此你在程序的结尾要加上一个return 0;表示反回值为0才可以当然那个0可以是其它整数。而括号内的void也表示没有参数的传入
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯