欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++編程中逗號運算符和條件運算符的使用方法講解

 更新時間:2016年01月14日 15:17:18   投稿:goldensun  
這篇文章主要介紹了C++編程中逗號運算符和條件運算符的使用方法講解,需要的朋友可以參考下

逗號運算符:,
允許對兩個語句進行分組,其中有一個是預期的。

expression , expression

備注
逗號運算符具有從左向右的關聯(lián)性。 由逗號分隔的兩個表達式將從左向右進行計算。 始終計算左操作數(shù),并且在計算右操作數(shù)之前將完成所有副作用。
在某些上下文(如函數(shù)參數(shù)列表)中,逗號可用作分隔符。 不要將該逗號用作分隔符與將其用作運算符的情況混淆;這兩種用法完全不同。
考慮表達式

e1 , e2

該表達式的類型和值是 e2 的類型和值;e1 的計算結果將被丟棄。 如果右操作數(shù)是左值,則結果為左值。
在通常將逗號用作分隔符的方案中(例如,在函數(shù)或聚合初始值設定項的實參中),逗號運算符及其操作數(shù)必須包含在括號中。 例如:

func_one( x, y + 2, z );
func_two( (x--, y + 2), z );

在上面的對 func_one 的函數(shù)調用中,會傳遞以逗號分隔的三個參數(shù):x、y + 2 和 z。 在對 func_two 的函數(shù)調用中,圓括號強制編譯器將第一個逗號解釋為順序計算運算符。 此函數(shù)調用將兩個參數(shù)傳遞給 func_two。 第一個參數(shù)是順序計算運算 (x--, y + 2) 的結果,具有表達式 y + 2 的值和類型;第二個參數(shù)為 z。
示例

 // cpp_comma_operator.cpp
#include <stdio.h>
int main () {
 int i = 10, b = 20, c= 30;
 i = b, c;
 printf("%i\n", i);

 i = (b, c);
 printf("%i\n", i);
}

20
30

條件運算符:? :
語法

expression ? expression : expression

備注
條件運算符 (? :) 是一個三元運算符(采用三個操作數(shù))。條件運算符按以下方式運行:
第一個操作數(shù)隱式轉換為 bool。計算該操作數(shù),并在繼續(xù)前完成所有副作用。

  • 如果第一個操作數(shù)的計算結果為 true (1),則計算第二個操作數(shù)。
  • 如果第一個操作數(shù)的計算結果為 false (0),則計算第三個操作數(shù)。
  • 條件運算符的結果是操作數(shù)(無論是第二個還是第三個)的計算結果。只有最后兩個操作數(shù)之一在條件表達式中計算。
  • 條件表達式具有從右到左的關聯(lián)性。第一個操作數(shù)必須是整數(shù)或指針類型。以下規(guī)則適用于第二個和第三個操作數(shù):
  • 如果兩個操作數(shù)是相同的類型,則結果也是該類型。
  • 如果兩個操作數(shù)都是算術或枚舉類型,則執(zhí)行常用算術轉換(在算術轉換中有述)來將它們轉換為通用類型。
  • 如果兩個操作數(shù)都是指針類型,或者一個是指針類型,另一個是計算結果為 0 的常量表達式,則執(zhí)行指針轉換來將它們轉換為通用類型。
  • 如果兩個操作數(shù)都是引用類型,則執(zhí)行引用轉換來將它們轉換為通用類型。
  • 如果兩個操作數(shù)都是 void 類型,則通用類型是 void 類型。
  • 如果兩個操作數(shù)是相同的用戶定義類型,則通用類型也是該類型。
  • 如果操作數(shù)是不同的類型,而且至少有一個操作數(shù)是用戶定義類型,則使用語言規(guī)則來確定通用類型。(請參閱下面的警告。)

前面列表中沒有的第二個和第三個操作數(shù)的任意組合都是非法的。結果的類型是通用類型,如果第二個和第三個操作數(shù)是同一類型且都是左值,則結果為左值。

System_CAPS_warning警告
如果第二個和第三個操作數(shù)的類型不相同,則會按 C++ 標準中的指定調用復雜類型轉換規(guī)則。這些轉換可能會導致意外行為,包括構造和析構臨時對象。為此,我們強烈建議:(1) 避免將用戶定義的類型用作帶條件運算符的操作數(shù);(2) 如果確實要使用用戶定義的類型,務必將每個操作數(shù)顯式轉換為通用類型。

// expre_Expressions_with_the_Conditional_Operator.cpp
// compile with: /EHsc
// Demonstrate conditional operator
#include <iostream>
using namespace std;
int main() {
 int i = 1, j = 2;
 cout << ( i > j ? i : j ) << " is greater." << endl;
}

相關文章

  • C++的try塊與異常處理及調試技術實例解析

    C++的try塊與異常處理及調試技術實例解析

    這篇文章主要介紹了C++的try塊與異常處理及調試技術實例解析,有助于讀者加深對try塊調試技術的認識,需要的朋友可以參考下
    2014-07-07
  • C/C++?實現(xiàn)動態(tài)資源文件釋放的方法

    C/C++?實現(xiàn)動態(tài)資源文件釋放的方法

    當我們開發(fā)Windows應用程序時,通常會涉及到使用資源(Resource)的情況。資源可以包括圖標、位圖、字符串等,它們以二進制形式嵌入到可執(zhí)行文件中,這篇文章主要介紹了C/C++?實現(xiàn)動態(tài)資源文件釋放,需要的朋友可以參考下
    2023-12-12
  • C++11 中的std::function和std::bind詳解

    C++11 中的std::function和std::bind詳解

    這篇文章主要介紹了C++ 11 std::function和std::bind,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-10-10
  • Qt實現(xiàn)數(shù)據(jù)導出到xls的示例代碼

    Qt實現(xiàn)數(shù)據(jù)導出到xls的示例代碼

    導入導出數(shù)據(jù)到csv由于語法簡單,適用場景有限,于是本文將為大家介紹Qt如何實現(xiàn)導出數(shù)據(jù)到xls,感興趣的小伙伴可以跟隨小編一起試一試
    2022-01-01
  • QT中刪除信號于槽的連接的實現(xiàn)

    QT中刪除信號于槽的連接的實現(xiàn)

    本文主要介紹了QT中刪除信號于槽的連接的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • c語言中形參與實參的關系解讀

    c語言中形參與實參的關系解讀

    這篇文章主要介紹了c語言中形參與實參的關系,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • char str[] 與 char *str的區(qū)別詳細解析

    char str[] 與 char *str的區(qū)別詳細解析

    以下是對char str[]與char *str的區(qū)別進行了詳細的介紹,需要的朋友可以過來參考下
    2013-09-09
  • opencv實現(xiàn)視場轉換

    opencv實現(xiàn)視場轉換

    這篇文章主要為大家詳細介紹了opencv實現(xiàn)視場轉換,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 全面了解結構體、聯(lián)合體和枚舉類型

    全面了解結構體、聯(lián)合體和枚舉類型

    下面小編就為大家?guī)硪黄媪私饨Y構體、聯(lián)合體和枚舉類型。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • OpenCV實現(xiàn)多圖像拼接成一張大圖

    OpenCV實現(xiàn)多圖像拼接成一張大圖

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)多圖像拼接成一張大圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評論