C++短路求值(邏輯與、邏輯或)實(shí)例
本文實(shí)例講述了C++短路求值(邏輯與、邏輯或),分享給大家供大家參考。具體方法分析如下:
1、邏輯或的短路
首先看如下代碼:
#include <iostream> using namespace std; int main() { int a = 1; cout << "a = " << a <<endl; true || (a=0); cout << "a = " << a <<endl; }
運(yùn)行結(jié)果如下:
a = 1 a = 1
邏輯或的表現(xiàn)形式如下:
expression1 || exexpression2
這里用到了邏輯或,由于邏輯或的短路,expression1為true,則后面的expression2(即:(a=0) )不再求值,整個(gè)表達(dá)式的結(jié)果為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; }
運(yùn)行結(jié)果如下:
a=1 a=1
邏輯與的表現(xiàn)形式如下:
expression1 && exexpression2
上述代碼中用到了邏輯與,由于邏輯與的短路,expression1為false,則后面的expression2不再求值,整個(gè)的結(jié)果為false,所以a的值沒有改變。
3、應(yīng)用舉例
這里以CSDN上的一個(gè)帖子為例(http://topic.csdn.net/u/20121011/10/c7e0a805-b4e2-44db-9d71-455f5f851240.html ):
不用if語句,不用匯編,怎么使得兩數(shù)之積總是小于等于255?
大家看過帖子會(huì)發(fā)現(xiàn)有很多方法,比如最簡(jiǎn)單的條件表達(dá)式:
result = ((a*b) > 255) ? 255 : a*b;
這個(gè)是最先被人提出的,但好像樓主不認(rèn)同,那就試下以下兩種方式:
用邏輯或的短路:
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; } }
運(yùn)行效果如下:
希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。
相關(guān)文章
基于C++的攝像頭圖像采集及拼接程序的簡(jiǎn)單實(shí)現(xiàn)
本程序是在?ubuntu14.04?平臺(tái)下實(shí)現(xiàn)的,在本項(xiàng)目目錄下,已經(jīng)有編譯生成的可執(zhí)行程序,其中Camera_to_Frmae.cpp是我們從雙攝像頭實(shí)時(shí)抓取單幀圖像的源碼,對(duì)基于C++的攝像頭圖像采集及拼接程序的實(shí)現(xiàn)感興趣的朋友一起看看吧2022-01-01C++編譯錯(cuò)誤variable-sized?object?may?not?be?initiali問題
這篇文章主要介紹了C++編譯錯(cuò)誤variable-sized?object?may?not?be?initiali問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05學(xué)生成績(jī)管理系統(tǒng)C++實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了學(xué)生成績(jī)管理系統(tǒng)C++實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12c++11 chrono全面解析(最高可達(dá)納秒級(jí)別的精度)
chrono是c++ 11中的時(shí)間庫,本文就來詳細(xì)的介紹一下chrono庫的具體使用,關(guān)鍵是理解里面時(shí)間段(Durations)、時(shí)間點(diǎn)(Time points)的概念,感興趣的可以了解一下2021-11-11C語言實(shí)現(xiàn)簡(jiǎn)單的五子棋小游戲
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡(jiǎn)單的五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05C語言學(xué)生成績(jī)管理系統(tǒng)小設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語言學(xué)生成績(jī)管理系統(tǒng)小設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01利用C++編寫簡(jiǎn)易寶可夢(mèng)對(duì)戰(zhàn)小游戲
本文利用C++語言編寫了一個(gè)小時(shí)候課間嘴上玩的那種寶可夢(mèng)游戲,只有早期的三個(gè)寶可夢(mèng)和基礎(chǔ)招式,感興趣的朋友快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06