Aracılığıyla paylaş


Koşullu İfade İşleci

C'nin bir üçüncül işleci vardır: koşullu ifade işleci (? :).

Sözdizimi

conditional-expression:
logical-OR-expression
logical-OR-expression ? expression : conditional-expression

tam logical-OR-expression sayı, kayan veya işaretçi türüne sahip olmalıdır. 0'a denkliği açısından değerlendirilir. Bir sıra noktası izler logical-OR-expression. İşlenenlerin değerlendirilmesi aşağıdaki gibi devam eder:

  • 0'a eşit değilse logical-OR-expression değerlendirilir expression . İfadenin değerlendirilmesinin sonucu, sonlandırıcı expressionolmayan tarafından verilir. (Bu, yalnızca doğru olduğunda logical-OR-expression değerlendirildiğini gösterirexpression.)

  • 0'a eşitse logical-OR-expression değerlendirilir conditional-expression . İfadenin sonucu değeridir conditional-expression. (Bu, yalnızca false olduğunda logical-OR-expression değerlendirildiğini gösterirconditional-expression.)

Etki, ya da expression conditional-expression değerlendirilir, ancak her ikisini birden değil.

Koşullu işlemin sonucunun türü, veya conditional-expression işleneninin türüne expression bağlıdır:

  • Tamsayı veya conditional-expression kayan türe sahipse expression (türleri farklı olabilir), işleç normal aritmetik dönüştürmeleri gerçekleştirir. Sonucun türü, dönüştürmeden sonra işlenenlerin türüdür.

  • Her ikisi de expression conditional-expression aynı yapıya, birleşime veya işaretçi türüne sahipse, sonucun türü aynı yapı, birleşim veya işaretçi türüdür.

  • her iki işlenenin türü voidvarsa, sonuç türüne voidsahiptir.

  • İşlenenlerden biri herhangi bir türde bir nesnenin işaretçisi, diğer işlenen ise işaretçi ise void, nesnenin işaretçisi işaretçisine void dönüştürülür ve sonuç öğesine yönelik bir işaretçidir void.

  • expression veya conditional-expression bir işaretçiyse ve diğer işlenen 0 değerine sahip bir sabit ifadeyse, sonucun türü işaretçi türüdür.

İşaretçiler için tür karşılaştırmasında, işaretçi noktalarının önemsiz olduğu türdeki tüm tür niteleyicileri (const veya volatile) ancak sonuç türü niteleyicileri koşullunun her iki bileşeninden de devralır.

Örnekler

Aşağıdaki örneklerde koşullu işlecin kullanımları gösterilmektedir:

j = ( i < 0 ) ? ( -i ) : ( i );

Bu örnek için mutlak değerini i jatar. 0'dan küçükse i , -i öğesine jatanır. 0'dan büyük veya buna eşitse i , i öğesine jatanır.

void f1( void );
void f2( void );
int x;
int y;
    .
    .
    .
( x == y ) ? ( f1() ) : ( f2() );

Bu örnekte, iki işlev ve f1 f2ve ile iki değişken x ybildirilir. Programın ilerleyen bölümlerinde, iki değişken aynı değere sahipse işlev f1 çağrılır. f2 Aksi takdirde çağrılır.

Ayrıca bkz.

Koşullu İşleç: ? :