Aracılığıyla paylaş


Koşullu İşleç: ?:

Sözdizimi

expression ? expression : expression

Açıklamalar

Koşullu işleç (? :) bir üçüncül işleçtir (üç işlenen alır). Koşullu işleç aşağıdaki gibi çalışır:

  • İlk işlenen örtük olarak öğesine booldönüştürülür. Değerlendirilir ve devam etmeden önce tüm yan etkileri tamamlanır.

  • İlk işlenen (1) olarak değerlendirilirse true , ikinci işlenen değerlendirilir.

  • İlk işlenen (0) olarak değerlendirilirse false , üçüncü işlenen değerlendirilir.

Koşullu işlecin sonucu, değerlendirilen işlenenin sonucudur — ikinci veya üçüncü. Son iki işlenenden yalnızca biri bir koşullu ifade içinde değerlendirilir.

Koşullu ifadeler sağdan sola birleşme özelliği içindedir. Birinci işlenen bir entegral veya işaretçi türü olmalıdır. Aşağıdaki kurallar ikinci ve üçüncü işlenenler için geçerlidir:

  • her iki işlenen de aynı türdeyse, sonuç bu tür olur.

  • her iki işlenen de aritmetik veya numaralandırma türündeyse, bunları ortak bir türe dönüştürmek için normal aritmetik dönüştürmeler (Standart Dönüştürmeler kapsamındadır) gerçekleştirilir.

  • her iki işlenen de işaretçi türündeyse veya biri işaretçi türündeyse ve diğeri 0 olarak değerlendirilen sabit bir ifadeyse, işaretçi dönüştürmeleri bunları ortak bir türe dönüştürmek için gerçekleştirilir.

  • her iki işlenen de başvuru türündeyse, bunları ortak bir türe dönüştürmek için başvuru dönüştürmeleri gerçekleştirilir.

  • her iki işlenen de void türündeyse, ortak tür tür void'dir.

  • her iki işlenen de aynı kullanıcı tanımlı türdeyse, ortak tür bu türdür.

  • İşlenenlerin türleri farklıysa ve işlenenlerden en az birinin kullanıcı tanımlı türü varsa, ortak türü belirlemek için dil kuralları kullanılır. (Aşağıdaki uyarıya bakın.)

Yukarıdaki listede bulunmayan ikinci ve üçüncü işlenenlerin birleşimleri geçersizdir. Hem ikinci hem de üçüncü işlenen aynı türdeyse ve her ikisi de l-değeri ise, sonucun türü ortak türdür ve bir l-değerdir.

Uyarı

İkinci ve üçüncü işlenenlerin türleri aynı değilse, C++ Standard'da belirtildiği gibi karmaşık tür dönüştürme kuralları çağrılır. Bu dönüştürmeler, geçici nesnelerin oluşturulması ve yok edilmesi de dahil olmak üzere beklenmeyen davranışlara yol açabilir. Bu nedenle, (1) kullanıcı tanımlı türleri koşullu işleçle işlenen olarak kullanmaktan kaçınmanızı veya (2) kullanıcı tanımlı türler kullanıyorsanız, her işleneni açıkça ortak bir türe dönüştürmenizi kesinlikle öneririz.

Örnek

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

Ayrıca bkz.

C++ Yerleşik İşleçler, Öncelik ve İlişkisellik
Koşullu İfade İşleci