C++編程中逗號運算符和前提運算符的應用辦法講授。本站提示廣大學習愛好者:(C++編程中逗號運算符和前提運算符的應用辦法講授)文章只能為提供參考,不一定能成為您想要的結果。以下是C++編程中逗號運算符和前提運算符的應用辦法講授正文
逗號運算符:,
許可對兩個語句停止分組,個中有一個是預期的。
expression , expression
備注
逗號運算符具有從左向右的聯系關系性。 由逗號分隔的兩個表達式將從左向右停止盤算。 一直盤算左操作數,而且在盤算右操作數之前將完成一切反作用。
在某些高低文(如函數參數列表)中,逗號可用作分隔符。 不要將該逗號用作分隔符與將其用作運算符的情形混雜;這兩種用法完整分歧。
斟酌表達式
e1 , e2
該表達式的類型和值是 e2 的類型和值;e1 的盤算成果將被拋棄。 假如右操作數是左值,則成果為左值。
在平日將逗號用作分隔符的計劃中(例如,在函數或聚合初始值設定項的實參中),逗號運算符及其操作數必需包括在括號中。 例如:
func_one( x, y + 2, z ); func_two( (x--, y + 2), z );
在下面的對 func_one 的函數挪用中,會傳遞以逗號分隔的三個參數:x、y + 2 和 z。 在對 func_two 的函數挪用中,圓括號強迫編譯器將第一個逗號說明為次序盤算運算符。 此函數挪用將兩個參數傳遞給 func_two。 第一個參數是次序盤算運算 (x--, y + 2) 的成果,具有表達式 y + 2 的值和類型;第二個參數為 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
備注
前提運算符 (? :) 是一個三元運算符(采取三個操作數)。前提運算符按以下方法運轉:
第一個操作數隱式轉換為 bool。盤算該操作數,並在持續前完成一切反作用。
後面列表中沒有的第二個和第三個操作數的隨意率性組合都長短法的。成果的類型是通用類型,假如第二個和第三個操作數是統一類型且都是左值,則成果為左值。
System_CAPS_warning正告
假如第二個和第三個操作數的類型不雷同,則會按 C++ 尺度中的指定挪用龐雜類型轉換規矩。這些轉換能夠會招致不測行動,包含結構和析構暫時對象。為此,我們激烈建議:(1) 防止將用戶界說的類型用作帶前提運算符的操作數;(2) 假如確切要應用用戶界說的類型,務勢必每一個操作數顯式轉換為通用類型。
// 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; }