[英]C ternary operator branches evaluation?
我一直假設C
中的三元運算符沒有評估未通過測試的分支。 為什么在這種情況下呢? a
小於b
所以只有c
應該分配給1
, d
應該保持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.