如何在 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 数据类型兼容。
我正在 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 数据类型兼容。