好奇心から、false と評価された場合に false 分岐で何もしない三項式を使用できるかどうか疑問に思い始めました。
つまり、次のような書き方があります。
variable = (someBool) ? i : <do nothing>;
とは対照的に:
if (someBool) {
variable = i;
}
((void)0)
orを no-op として試しwhile(false){};
ましたが、コンパイラは式を想定しています。
アップデート:
コードを簡単にしようとしたため、質問の意味が失われていることに気付きました。私が持っていた最初のアイデアは、静的変数自体を条件として使用して、静的変数を 3 項で初期化することでした。
static int var = (var != 0) ? var = 1 : (var already initialized, do nothing);
これは、初期化されていない変数が 0 に初期化されていることを前提としていますが、これは常に真であるとは限りません (または、リリース ビルドではまったくそうではありません)。だから多分それは仮定の質問です。