C++編程中的或||、與&&、非!邏輯運(yùn)算符基本用法整理
邏輯或運(yùn)算符:||
語(yǔ)法
logical-or-expression || logical-and-expression
備注
如果任一操作數(shù)或兩個(gè)操作數(shù)為 true,則邏輯“或”運(yùn)算符 (||) 返回布爾值 true;否則返回 false。操作數(shù)在計(jì)算之前隱式轉(zhuǎn)換為類(lèi)型 bool,結(jié)果的類(lèi)型為 bool。邏輯“或”具有從左向右的關(guān)聯(lián)性。
邏輯“或”運(yùn)算符的操作數(shù)不需要是同一類(lèi)型,但是它們必須是整型或指針類(lèi)型。操作數(shù)通常為關(guān)系或相等表達(dá)式。
第一個(gè)操作數(shù)將完全計(jì)算,并且在繼續(xù)計(jì)算邏輯“或”表達(dá)式之前將完成所有副作用。
僅當(dāng)?shù)谝粋€(gè)操作數(shù)的計(jì)算結(jié)果為 false (0) 時(shí)計(jì)算第二個(gè)操作數(shù)。在邏輯“或”表達(dá)式為 true 時(shí),這將消除對(duì)第二個(gè)操作數(shù)的不必要的計(jì)算。
printf( "%d" , (x == w || x == y || x == z) );
在上面的示例中,如果 x 與 w、y 或 z 相等,則 printf 函數(shù)的第二個(gè)參數(shù)的計(jì)算結(jié)果將為 true,并打印值 1。否則,它的計(jì)算結(jié)果將為 false,并打印值 0。只要其中一個(gè)條件的計(jì)算結(jié)果為 true,計(jì)算便會(huì)停止。
|| 的運(yùn)算符關(guān)鍵字
or 運(yùn)算符是 || 的等效文本。在您的程序中有兩種訪問(wèn) or 運(yùn)算符的方法:包括頭文件 iso646.h 或使用 /Za(禁用語(yǔ)言擴(kuò)展)編譯器選項(xiàng)進(jìn)行編譯。
// expre_Logical_OR_Operator.cpp
// compile with: /EHsc
// Demonstrate logical OR
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 10, c = 15;
cout << boolalpha
<< "The true expression "
<< "a < b || b > c yields "
<< (a < b || b > c) << endl
<< "The false expression "
<< "a > b || b > c yields "
<< (a > b || b > c) << endl;
}
邏輯與運(yùn)算符:&&
語(yǔ)法
expression && expression
備注
如果操作數(shù)為 true,則邏輯“與”運(yùn)算符 (&&) 返回布爾值 true,否則返回 false。操作數(shù)在計(jì)算之前隱式轉(zhuǎn)換為類(lèi)型 bool,結(jié)果的類(lèi)型為 bool。邏輯“與”具有從左到右的關(guān)聯(lián)性。
邏輯“與”運(yùn)算符的操作數(shù)不需要具有相同的類(lèi)型,但它們必須是整數(shù)或指針類(lèi)型。操作數(shù)通常為關(guān)系或相等表達(dá)式。
第一個(gè)操作數(shù)將完全計(jì)算,在繼續(xù)對(duì)邏輯“與”表達(dá)式進(jìn)行計(jì)算前將完成所有副作用。
如果第一個(gè)操作數(shù)的計(jì)算結(jié)果為 true(非零),則計(jì)算第二個(gè)操作數(shù)。當(dāng)邏輯“與”表達(dá)式為 false 時(shí),這種計(jì)算方式可消除不必要的對(duì)第二個(gè)操作數(shù)的計(jì)算??梢允褂么硕搪酚?jì)算防止 null 指針取消引用,如以下示例所示:
char *pch = 0; ... (pch) && (*pch = 'a');
如果 pch 為 null (0),則從不計(jì)算表達(dá)式的右側(cè)。因此,無(wú)法通過(guò) null 指針進(jìn)行賦值。
&& 的運(yùn)算符關(guān)鍵字
and 運(yùn)算符是 && 的文本等效項(xiàng)。您的程序中有兩種訪問(wèn) and 運(yùn)算符的方法:包含標(biāo)頭文件 iso646.h,或使用 /Za(禁用語(yǔ)言擴(kuò)展)編譯器選項(xiàng)進(jìn)行編譯。
// expre_Logical_AND_Operator.cpp
// compile with: /EHsc
// Demonstrate logical AND
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 10, c = 15;
cout << boolalpha
<< "The true expression "
<< "a < b && b < c yields "
<< (a < b && b < c) << endl
<< "The false expression "
<< "a > b && b < c yields "
<< (a > b && b < c) << endl;
}
邏輯非運(yùn)算符:!
語(yǔ)法
! cast-expression
備注
邏輯求反運(yùn)算符 (!) 反轉(zhuǎn)其操作數(shù)的含義。操作數(shù)必須是算法或指針類(lèi)型(或計(jì)算結(jié)果為算法或指針類(lèi)型的表達(dá)式)。操作數(shù)將隱式轉(zhuǎn)換為類(lèi)型 bool。如果已轉(zhuǎn)換的操作數(shù)是 false,則結(jié)果是 true;如果已轉(zhuǎn)換的操作數(shù)是 true,則結(jié)果是 false。結(jié)果為 bool 類(lèi)型。
對(duì)于表達(dá)式 e,一元運(yùn)算符表達(dá)式 !e 與該表達(dá)式 (e == 0) 等效,涉及重載運(yùn)算符的情況除外。
! 的運(yùn)算符關(guān)鍵字
not 運(yùn)算符是與 ! 等效文本。在您的程序中,可通過(guò)兩種方法訪問(wèn) not 運(yùn)算符:包含頭文件 iso646.h,或使用 /Za(禁用語(yǔ)言擴(kuò)展)編譯器選項(xiàng)進(jìn)行編譯。
// expre_Logical_NOT_Operator.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main() {
int i = 0;
if (!i)
cout << "i is zero" << endl;
}
相關(guān)文章
C語(yǔ)言 以數(shù)據(jù)塊的形式讀寫(xiě)文件詳解及實(shí)現(xiàn)代碼
本文主要介紹 C語(yǔ)言 以數(shù)據(jù)塊的形式讀寫(xiě)文件,這里對(duì)相關(guān)知識(shí)資料做了整理,并附代碼示例,以便大家學(xué)習(xí)參考,有學(xué)習(xí)此部分知識(shí)的朋友可以參考下2016-08-08
OpenCV實(shí)現(xiàn)智能視頻監(jiān)控
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)智能視頻監(jiān)控,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
json格式解析和libjson的用法介紹(關(guān)于cjson的使用方法)
下面小編就為大家?guī)?lái)一篇json格式解析和libjson的用法介紹(關(guān)于cjson的使用方法)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字游戲
這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
C語(yǔ)言實(shí)現(xiàn)文件讀寫(xiě)操作
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)文件讀寫(xiě)操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
Linux系統(tǒng)下C語(yǔ)言gets函數(shù)出現(xiàn)警告問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于在Linux系統(tǒng)下C語(yǔ)言gets函數(shù)出現(xiàn)警告問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
C語(yǔ)言三分鐘精通時(shí)間復(fù)雜度與空間復(fù)雜度
算法復(fù)雜度分為時(shí)間復(fù)雜度和空間復(fù)雜度。其作用:?時(shí)間復(fù)雜度是度量算法執(zhí)行的時(shí)間長(zhǎng)短;而空間復(fù)雜度是度量算法所需存儲(chǔ)空間的大小2022-02-02
關(guān)于VS2022不能使用<bits/stdc++.h>的解決方案(萬(wàn)能頭文件)
#include<bits/stdc++.h>包含了目前 C++ 所包含的所有頭文件,又稱(chēng)萬(wàn)能頭文件,那么如何在VS2022中使用萬(wàn)能頭呢?下面小編給大家代理了關(guān)于VS2022不能使用<bits/stdc++.h>的解決方案(萬(wàn)能頭文件),感興趣的朋友一起看看吧2022-03-03

