簡體   English   中英

C 三元算子分支評測?

[英]C ternary operator branches evaluation?

我一直假設C中的三元運算符沒有評估未通過測試的分支。 為什么在這種情況下呢? a小於b所以只有c應該分配給1d應該保持2 感謝您的提示和建議。 我用 gcc-9 和 clang 編譯。

#include <stdio.h>

int main() {
  int a = 42;
  int b = 99;
  int c = 0;
  int d = 2;

  // Both branches are evaluated?
  a < b ? c, c = 1 : d, d = 1;

  printf("c %d, d %d.\n", c, d);
  // Prints c 1, d 1.
}

逗號運算符的優先級低於條件運算符,因此您的表達式等效於:

(a < b ? c, c = 1 : d), d = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM