在c/c++中的&、|和&&、||的区别(易混淆)
来源:互联网 发布:a算法八数码问题 编辑:程序博客网 时间:2024/06/05 17:04
在c/c++中的&和|是位运算符,和它们处于相同地位的还有<<、>>、^、~。这两个运算符会使得参与运算的参数的每一位都进行运算。例如10和6相与,即1010&0110,得0010,也就是2.
但是&&和||却是逻辑运算符,在它们看来,除了0之外,其他的非零整数都可以看做true,所以如果10和6相与,结果会是true。
有的时候会发现在使用&&的地方可以使用&来替代。在大多数情况下确实都是可以的。这是因为在使用&&的时候,两侧如果都是非0值,那么结果就是true,而在使用&的时候进行相与运算,得到的结果一般也是这样,但是也会有偶然情况:例如10和5相与,即1010&0101,则结果为0,这时候的结果就是不一样的。
总之,它们两个是不一样的。
而且在使用&&的时候,如果第一个就是false,那么就不会再计算第二个参数,因为不管怎样,结果都会是false。这个被称为短路,对于||也是同样的。
总结一下:
&&是逻辑运算符,&是位运算符,在有些时候&&可以被&替代,但是这只能算作巧合。
另外&&还可以短路,在第一个参数是false的情况下,就会发生短路。||在第一个参数是true的情况下,也会发生短路。
0 0
- 在c/c++中的&、|和&&、||的区别(易混淆)
- JNIEnv的使用在C和C++中的区别
- const在C和C++中的区别
- const 在c和c++中的区别
- static在C和C++中的区别
- const在C和C++中的区别
- const 在c和c++中的区别
- const在C和C++中的区别
- const在c和c++中的区别
- const在c和c++中的区别
- const 在c和c++中的区别
- struct 在C++和C中的区别
- const 在c和c++中的区别
- typedef在C和C++中的区别
- static在C和C++中的区别
- struct在C和C++中的区别
- static在c和c++中的区别
- const在C和C++中的区别
- 正则表达式execl
- selenium:4.selenium的操作cookie 以及调用jsd
- 数据挖掘十大经典算法
- Android性能优化大纲(自我总结)
- vbs给word和wps上个u盘锁
- 在c/c++中的&、|和&&、||的区别(易混淆)
- 《C和指针》 第三章 数据(2)
- hdu 1787 GCD Again (欧拉函数在线模板)
- Mapreduce算法五、mapJoin与标识
- C++模板类内友元(友元函数,友元类)声明的三种情况
- POJ 3761 Bubble Sort (乘方取模)
- 设备
- hdoj-【3555 Bomb】
- greendao3.0以上使用步骤(一):基础使用