C++中运算符 &和&&、|和|| 的详解及区别

 更新时间:2016年11月24日 10:14:14   投稿:lqh  
这篇文章主要介绍了C++中运算符 &和&&、|和|| 的详解及区别的相关资料,这里举例说明该如何区别他们的不同,需要的朋友可以参考下

C++中运算符 &和&&、|和|| 的详解及区别

简介:

&&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型
&与| 既可以进行逻辑运算,又可以进行位运算,两边既可以是bool类型,又可以是数值类型

区别:

if (A && B) 如果 A 为 false ,整个表达式就为 false,不再计算 B 的值了。
if (A & B) 如果 A 为 false ,整个表达式就为 false,但还要计算 B 的值。
if (A && B++) 如果A 为 false,&&不会再计算后面的值
if (A & B++) 如果A 为 false,&则会计算后面的值

& | 为整型和 bool 类型预定义了两种运算规则

对于整型,& 和 | 计算操作数的按位“与”;
对于 bool 操作数,& 或 | 计算操作数的逻辑“与”、“或”;
也就是说对于bool类型 & 和&&、| 和 || 的if判断结果是相同的。
对于整形数据&&只判断真假(0或非0),两边的数据必须都为真或任一方为假;
对于整形数据&两边的数据则进行按位与运算,并返回计算结果让if判断这个值
逻辑(AND): true && false : false
按位(AND): 1001 0110 & 1111 1111 : 1001 0110 (二进制位)

例子:

 //a&b 与运算,会返回a和b中每个位(比特,即二进制)最小的值; 
 value = 1 & 1;  //1
 value = 1 & 0;  //0
 value = 0 & 1;  //0
 value = 0 & 0;  //0
 value = 3 & 3;  //3 二进制计算:11 = 11&11
 value = 3 & 2;  //2 二进制计算:10 = 11&10
 value = 2 & 3;  //2 二进制计算:10 = 10&11
 value = 5 & 6;  //4 二进制计算:100 = 101&110
 value = 213 & 73;  //65

 //a|b 或运算,会返回a和b中每个位(比特,即二进制)最大的值; 
 value = 1|1;  //1
 value = 1|0;  //1
 value = 0|1;  //1
 value = 0|0;  //0
 value = 3|3;  //3 二进制计算:11 = 11 | 11
 value = 3|2;  //3 二进制计算:11 = 11 | 10
 value = 2|3;  //3 二进制计算:11 = 10 | 11
 value = 5|6;  //7 二进制计算:111 = 101 | 110
 value = 213|73;  //221

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • C++条件语句和条件运算符的使用方法讲解

    C++条件语句和条件运算符的使用方法讲解

    这篇文章主要介绍了C++条件语句和条件运算符的使用方法讲解,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • 简单总结C语言中各种类型的指针的概念

    简单总结C语言中各种类型的指针的概念

    这篇文章主要简单总结了C语言中各种类型的指针的概念,指针可以说是C语言本身所具有的最大特性,平时根据不同使用场合习惯地将其简单分类,需要的朋友可以参考下
    2016-03-03
  • C语言链表实现贪吃蛇小游戏

    C语言链表实现贪吃蛇小游戏

    这篇文章主要为大家详细介绍了C语言链表贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 详解C++赋值操作符重载

    详解C++赋值操作符重载

    这篇文章主要介绍了C++赋值操作符重载的相关资料,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下
    2020-08-08
  • C语言植物大战数据结构二叉树递归

    C语言植物大战数据结构二叉树递归

    这篇文章主要为大家介绍了C语言植物大战数据结构二叉树递归,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • win32使用openfilename浏览文件窗口示例

    win32使用openfilename浏览文件窗口示例

    这篇文章主要介绍了使用win32 API打开浏览文件窗口,使用OPENFILENAME结构体来实现这个功能,需要的朋友可以参考下
    2014-02-02
  • C++ deque容器的具体使用

    C++ deque容器的具体使用

    deque又称双端队列容器。deque容器中存储元素并不能保证所有元素都存储到连续的内存空间中,本文详细的介绍了C++ deque容器的使用,感兴趣的可以了解一下
    2021-05-05
  • 深入探讨:宏、内联函数与普通函数的区别

    深入探讨:宏、内联函数与普通函数的区别

    本篇文章是对宏、内联函数与普通函数的区别进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言指针基础详解

    C语言指针基础详解

    这篇文章主要介绍了C语言指针的基础,主要对C语言中指针的本质及常见用法做了较为通俗易懂的分析,是后续深入学习C语言的基础,需要的朋友可以参考下
    2021-10-10
  • matlab遗传算法求解车间调度问题分析及实现源码

    matlab遗传算法求解车间调度问题分析及实现源码

    这篇文章主要为大家介绍了matlab遗传算法求解车间调度问题解析,文中附含详细实现源码,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-02-02

最新评论