程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++短路求值(邏輯與、邏輯或)實例

C++短路求值(邏輯與、邏輯或)實例

編輯:關於C++

C++短路求值(邏輯與、邏輯或)實例。本站提示廣大學習愛好者:(C++短路求值(邏輯與、邏輯或)實例)文章只能為提供參考,不一定能成為您想要的結果。以下是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++法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved