程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++編程中逗號運算符和前提運算符的應用辦法講授

C++編程中逗號運算符和前提運算符的應用辦法講授

編輯:關於C++

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。盤算該操作數,並在持續前完成一切反作用。

  • 假如第一個操作數的盤算成果為 true (1),則盤算第二個操作數。
  • 假如第一個操作數的盤算成果為 false (0),則盤算第三個操作數。
  • 前提運算符的成果是操作數(不管是第二個照樣第三個)的盤算成果。只要最初兩個操作數之一在前提表達式上鉤算。
  • 前提表達式具有從右到左的聯系關系性。第一個操作數必需是整數或指針類型。以下規矩實用於第二個和第三個操作數:
  • 假如兩個操作數是雷同的類型,則成果也是該類型。
  • 假如兩個操作數都是算術或列舉類型,則履行經常使用算術轉換(在算術轉換中有述)來將它們轉換為通用類型。
  • 假如兩個操作數都是指針類型,或許一個是指針類型,另外一個是盤算成果為 0 的常量表達式,則履行指針轉換來將它們轉換為通用類型。
  • 假如兩個操作數都是援用類型,則履行援用轉換來將它們轉換為通用類型。
  • 假如兩個操作數都是 void 類型,則通用類型是 void 類型。
  • 假如兩個操作數是雷同的用戶界說類型,則通用類型也是該類型。
  • 假如操作數是分歧的類型,並且至多有一個操作數是用戶界說類型,則應用說話規矩來肯定通用類型。(請參閱上面的正告。)

後面列表中沒有的第二個和第三個操作數的隨意率性組合都長短法的。成果的類型是通用類型,假如第二個和第三個操作數是統一類型且都是左值,則成果為左值。

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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved