我正在研究Objective C,我想做这样的事情:
if (a && !b) {
// a do something...
} else if (!a && b) {
// b do something...
}
我想知道是否有更简单的东西,比如:
if (a XOR b) {
// the existing variable do something...
}
提前致谢!!
答案 0 :(得分:2)
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
}
}
请注意,从xor扩展的此解决方案比您提供的解决方案更长。
答案 1 :(得分:1)
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 var将包含存在的值。如果aux为NULL,则不输入if块。此外,aux不必是void *或指针,它只需要与a和b数据类型兼容。
答案 2 :(得分:0)
if( !a != !b ) // same as a xor b