C++短路求值(逻辑与、逻辑或)实例

 更新时间:2014年10月08日 11:26:42   投稿:shichen2014  
这篇文章主要介绍了C++短路求值(逻辑与、逻辑或)实例,以实例形式讲述了逻辑或的短路与逻辑与的短路及相应的应用实例,需要的朋友可以参考下

本文实例讲述了C++短路求值(逻辑与、逻辑或),分享给大家供大家参考。具体方法分析如下:

1、逻辑或的短路

首先看如下代码:

#include <iostream>
using namespace std;
int main()
{
  int a = 1;
  cout << "a = " << a <<endl;
  true || (a=0);
  cout << "a = " << a <<endl;
}

运行结果如下:

a = 1

a = 1

逻辑或的表现形式如下:

expression1 || exexpression2

这里用到了逻辑或,由于逻辑或的短路,expression1为true,则后面的expression2(即:(a=0) )不再求值,整个表达式的结果为true,所以a的值仍为1,没有改变。

2、逻辑与的短路

首先看如下代码:

#include <iostream>
using namespace std;
int main()
{
  int a = 1;
  cout << "a = " << a <<endl;
  false && (a=3);
  cout << "a = " << a <<endl;
}

运行结果如下:

a=1

a=1

逻辑与的表现形式如下:

expression1 && exexpression2

上述代码中用到了逻辑与,由于逻辑与的短路,expression1为false,则后面的expression2不再求值,整个的结果为false,所以a的值没有改变。

3、应用举例

这里以CSDN上的一个帖子为例(http://topic.csdn.net/u/20121011/10/c7e0a805-b4e2-44db-9d71-455f5f851240.html ):

不用if语句,不用汇编,怎么使得两数之积总是小于等于255?

大家看过帖子会发现有很多方法,比如最简单的条件表达式:

result = ((a*b) > 255) ? 255 : a*b;

这个是最先被人提出的,但好像楼主不认同,那就试下以下两种方式:

用逻辑或的短路:

bool tmp = ((result = a*b) < 255) || (result=255);

用逻辑与的短路:

bool tmp = ((result = a*b) >= 255) && (result=255);

完整代码如下:

#include <iostream>
using namespace std;
int main()
{
  int a,b,result;
  while (true)
  {
    cin>>a>>b;
//    result = ((a*b) > 255) ? 255 : a*b;
//    bool tmp = ((result = a*b) < 255) || (result=255);
    bool tmp = ((result = a*b) >= 255) && (result=255);
    cout<<result<<endl;
  }
}

运行效果如下:

希望本文所述对大家的C++程序设计有所帮助。

相关文章

  • C++实现冒泡排序(BubbleSort)

    C++实现冒泡排序(BubbleSort)

    这篇文章主要为大家详细介绍了C++实现冒泡排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • Qt编写地图之实现经纬度坐标纠偏

    Qt编写地图之实现经纬度坐标纠偏

    地图应用中都涉及到一个问题就是坐标纠偏的问题,这个问题的是因为根据地方规则保密性要求不允许地图厂商使用标准的GPS坐标,而是要用国家定义的偏移标准。本文将详细讲解如何在Qt中实现经纬度坐标纠偏,需要的可以参考一下
    2022-03-03
  • Qt+Live555搭建RTSP服务器的方法步骤

    Qt+Live555搭建RTSP服务器的方法步骤

    本文主要介绍了Qt+Live555搭建RTSP服务器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 如何用C写一个web服务器之基础功能

    如何用C写一个web服务器之基础功能

    C语言是一门很基础的语言,程序员们对它推崇备至,本文将带着大家来看一下,如何用C写一个web服务器。
    2021-05-05
  • C语言fillpoly函数详解

    C语言fillpoly函数详解

    在C语言中,fillpoly函数的功能是画一个多边形,并且把多边形填充。填充边框所定义的多边形的内部。fillpoly 函数的用法:void far fillpoly(int numpoints, int far *polypoints);。
    2015-10-10
  • C++中std::optional的使用指南分享

    C++中std::optional的使用指南分享

    C++ 17 引入了std::optional,表示一个可能有值的对象,这篇文章主要来和大家聊聊std::optional的使用,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-06-06
  • C++冒泡排序及其优化算法

    C++冒泡排序及其优化算法

    这篇文章主要为大家介绍了C++冒泡排序及其优化算法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11
  • C++中队列queue的用法实例详解

    C++中队列queue的用法实例详解

    队列先进先出,即只能在容器的末尾添加新元素,只能从头部移除元素,下面这篇文章主要给大家介绍了关于C++中队列queue用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • 漫画讲解C语言中最近公共祖先的三种类型

    漫画讲解C语言中最近公共祖先的三种类型

    这篇文章主要总结了使用C语言查找最近公共祖先的三种方法类型,用漫画的方式讲解原理定义,看上去更生动形象,帮助你更好的理解透彻,快来跟着本文往下看吧
    2021-11-11
  • C++递归实现螺旋数组的实例代码

    C++递归实现螺旋数组的实例代码

    这篇文章主要介绍了C++递归实现螺旋数组的实例代码,代码简单易懂,非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04

最新评论