我试图只使用operator>()、||和!操作符来实现一个||函数。我可以使用==操作符这样做,但我不知道如何消除一个操作数与另一个操作数相等的情况,只使用三个给定的操作符。我是这样做的,不是这样的:
bool operator>(a, b){
if(!(a < b) || !(a == b){
return true;
}
else{
return false;
}
}到目前为止,我想出的唯一可能就是以某种方式创建一个递归函数。除此之外,还有其他方法可以做到吗?
发布于 2015-11-17 17:22:47
a < b当且仅当b > a - as @Kerrek将其简单地放在上面。
bool operator>(a, b){
if(b < a){
return true;
}
else{
return false;
}
}编辑:,甚至进一步简化,这要归功于下面的@Mokosha
bool operator>(a, b){
return b < a;
}发布于 2015-11-17 17:25:26
除了@KerrekSB提出的显而易见的解决方案(这是最好的解决方案,因为它的简单性),作为一种好奇,您还可以使用XNOR运算符从代码中遵循这种方法(请注意,仅使用||运算符是不可能的,因为要定义XOR,您需要||和&&运算符-更多的这里):
bool operator>(a, b){
if(!(a < b) || !(x ^ y){
return true;
}
else{
return false;
}
}https://stackoverflow.com/questions/33763057
复制相似问题