在学习编程中,&和&& 被解释为:&&是逻辑操作符,而&是位操作符,但是它们的具体使用上的区别是什么呢?
1、当&&和&作为逻辑操作符时,看看它们都有什么作用。请看下面例子:
1 int i = 8;
2 int j = 8;
3 int k = 8;
4 int h = 8;
5 bool a = (i > 5) && ((i = i + 5) > 10); //................(1)
6 bool b = (j > 5) & ((j = j + 5) > 10); //................(2)
7 bool c = (k > 15) && ((k = k + 5) > 10);//................(3)
8 bool d = (h > 15) & ((h = h + 5) > 10); //................(4)
请看上图输出结果:
对于(1)来说,i > 5 为True,(i = i + 5) > 10为True,那么a就为True,即,两者都为True则a为True。此时i=13。
对于(2)来说,j > 5为True,(j = j + 5) > 10为True,那么b就为True,即,两者都为True则a为True。此时j=13。
对于(3)来说,k > 15为False,(k = k + 5) > 10为True,那么c就为False,即,一True一False则c为False。此时k=8。
对于(4)来说,h > 15为False,(h = h + 5) > 10为True,那么d就为False,即,一True一False则d为False。此时h=13。
由此可以总结一句话:
&&:逻辑与,两True才为True,一False即为False。即:两真才为真,一假即为假。
& :逻辑与,两True才为True,一False即为False。即:两真才为真,一假即为假。
区别:
表达式(1) && 表达式(2),只有表达式(1)为True时,表达式(2)才会执行。
表达式(1) & 表达式(2),无论表达式(1)为True或False,表达式(2)都会执行。
2、当&作为位操作符时,看看它有什么作用。请看下面例子:
1 int i = 6; //6的二进制为0110
2
3 i = i & 5; //5的二进制为0101
请看上图输出结果:
当&为位操作符时,6和5进行了位运算,而6的二进制为0110,5的二进制为0101,逻辑&后,此时i的值的二进制为0100,对应的十进制为4。