出于好奇,我开始想知道是否有可能有一个三元表达式,如果它的计算结果为假,则在假分支中什么都不做。
即有没有办法写这样的东西:
variable = (someBool) ? i : <do nothing>;
相对于:
if (someBool) {
variable = i;
}
我试过((void)0)
or while(false){};
as no-op 但编译器需要一个表达式。
更新:
我意识到这个问题失去了一些意义,因为我试图让代码更容易。我最初的想法是用三元初始化一个静态变量 - 使用静态变量本身作为条件:
static int var = (var != 0) ? var = 1 : (var already initialized, do nothing);
这是假设未初始化的变量被初始化为 0,这并不总是正确的(或者从不在发布版本中,不太确定)。所以也许这是一个假设性的问题。