C++編程中的或||、與&&、非!邏輯運(yùn)算符基本用法整理
邏輯或運(yùn)算符:||
語法
logical-or-expression || logical-and-expression
備注
如果任一操作數(shù)或兩個(gè)操作數(shù)為 true,則邏輯“或”運(yùn)算符 (||) 返回布爾值 true;否則返回 false。操作數(shù)在計(jì)算之前隱式轉(zhuǎn)換為類型 bool,結(jié)果的類型為 bool。邏輯“或”具有從左向右的關(guān)聯(lián)性。
邏輯“或”運(yùn)算符的操作數(shù)不需要是同一類型,但是它們必須是整型或指針類型。操作數(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)算符是 || 的等效文本。在您的程序中有兩種訪問 or 運(yùn)算符的方法:包括頭文件 iso646.h 或使用 /Za(禁用語言擴(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)算符:&&
語法
expression && expression
備注
如果操作數(shù)為 true,則邏輯“與”運(yùn)算符 (&&) 返回布爾值 true,否則返回 false。操作數(shù)在計(jì)算之前隱式轉(zhuǎn)換為類型 bool,結(jié)果的類型為 bool。邏輯“與”具有從左到右的關(guān)聯(lián)性。
邏輯“與”運(yùn)算符的操作數(shù)不需要具有相同的類型,但它們必須是整數(shù)或指針類型。操作數(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è)。因此,無法通過 null 指針進(jìn)行賦值。
&& 的運(yùn)算符關(guān)鍵字
and 運(yùn)算符是 && 的文本等效項(xiàng)。您的程序中有兩種訪問 and 運(yùn)算符的方法:包含標(biāo)頭文件 iso646.h,或使用 /Za(禁用語言擴(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)算符:!
語法
! cast-expression
備注
邏輯求反運(yùn)算符 (!) 反轉(zhuǎn)其操作數(shù)的含義。操作數(shù)必須是算法或指針類型(或計(jì)算結(jié)果為算法或指針類型的表達(dá)式)。操作數(shù)將隱式轉(zhuǎn)換為類型 bool。如果已轉(zhuǎn)換的操作數(shù)是 false,則結(jié)果是 true;如果已轉(zhuǎn)換的操作數(shù)是 true,則結(jié)果是 false。結(jié)果為 bool 類型。
對(duì)于表達(dá)式 e,一元運(yùn)算符表達(dá)式 !e 與該表達(dá)式 (e == 0) 等效,涉及重載運(yùn)算符的情況除外。
! 的運(yùn)算符關(guān)鍵字
not 運(yùn)算符是與 ! 等效文本。在您的程序中,可通過兩種方法訪問 not 運(yùn)算符:包含頭文件 iso646.h,或使用 /Za(禁用語言擴(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; }
上一篇:學(xué)習(xí)C和C++的9點(diǎn)經(jīng)驗(yàn)總結(jié)
欄 目:C語言
下一篇:快速入門的一些C\C++書籍
本文標(biāo)題:C++編程中的或||、與&&、非!邏輯運(yùn)算符基本用法整理
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2593.html
您可能感興趣的文章
- 04-02c語言沒有round函數(shù) round c語言
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實(shí)現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10c++中inline的用法分析
- 01-10如何尋找數(shù)組中的第二大數(shù)
- 01-10用C++實(shí)現(xiàn)DBSCAN聚類算法
- 01-10全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法(C++)
- 01-10C++大數(shù)模板(推薦)
- 01-10淺談C/C++中的static與extern關(guān)鍵字的使用詳解


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文