还没搞懂&与&&在c语言中的区别?快点进来看看!

谈&与&&在c语言中的区别

1 &

&在c语言中表示按位与,格式如下:

int result = a&b;

所以a&b返回值为整数类型

那什么是按位与呢?

按位与即将 & 两侧的数字转换为2进制后逐位进行""比较(如果a,b所对应的二进制位数不同,则在位数低者的最高位前补0直至位数相同——比如1100与10,那就要将10变为0010,此时值不发生变化),

的所有比较结果如下(左右可互换):

&左侧&右侧最终结果
000
010
100
111

逐位比较过后,将得出的结果按对应位置摆放,并将摆放后的结果转换为10进制输出。

举例:

#include <stdio.h>
int main() 
{
	int result=12&5;
	printf("%d",result); 
}

12对应的二进制为1100(a):5对应的二进制为0101(b)

我们先列个表格逐位分析:

ab结果
100
111
000
010

(从上到下就是从最高位到最低位)

那么最终结果就是0100,再将其转为十进制(0100对应十进制为4)赋值给result

所以最终打印的结果为

4

2 &&

&&是一个逻辑运算符,只有两侧的逻辑表达式同时为真,整个逻辑表达式才为真

&左侧&右侧最终结果

(真,假也可以换做1,0)

补充:对于数字来说,0为假,其余为真

举例:

#include <stdio.h>
int main() 
{
	int a=12,b=5,c=0;
	if(a==0&&b==0)
	printf("row1");
	if(a==0&&b==5)
	printf("row2");
	if(a==12&&b==0)
	printf("row3");
	if(a==12&&b==5)
	printf("row4");
}

代码中四个if中&&左右两侧的逻辑表达式值与之前提到的表格相对应,即:

&左侧&右侧最终结果

显然,最终输出结果为

row4
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值