如何在 IF 子句中获取现有变量的值?

How can I get the value of the existing variable in a IF clause?

我正在 Objective C 工作,我想做这样的事情:

if (a && !b) {
  // a do something...
} else if (!a && b) {
  // b do something...
}

我想知道是否有更简单的东西,比如:

if (a XOR b) {
  // the existing variable do something...
}

提前致谢!!

Objective C是C的超集,使用^运算符。或者您可以从逻辑上思考(因为 xor 只有在其中一个为真而另一个为假时才为真)并使用:

// This won't work for all types, be careful
if (a != b){
    if (a){
        // a do something
    }   
    if (b){
        // b do something
    }
}

请注意,从异或运算扩展而来的这一解决方案比您提供的解决方案更长。

if( !a != !b ) // same as a xor b

好吧,我不确定我是否误解了,但我想一个可能的解决方案是使用 ?运算符。

void *aux;
if( aux = a ? (b ? NULL : a) : (b ?  b : NULL) )
    //working with aux here

尽管如此,如果想保持简单,这就很难读了。此外,这将扩展为类似:

void *aux;
if(a){
    if(b)
         aux = NULL;
    else
         aux = a;
}else{
    if(b)
         aux = b;
    else
         aux = NULL;
}

我的建议是保持代码不变。它更具可读性,并且在性能方面,我相信您不会注意到这些方法之间有太大差异

为清楚起见编辑:
顺便说一句,在 if 块内,辅助变量将包含存在的值。如果 aux 为 NULL,则不会输入 if 块。此外,aux 不必是 void * 或指针,它只需要与 a 和 b 数据类型兼容。