c+中的两个比较运算符+;像蟒蛇 5 > x > 1代码> C++中的工作,就像Python中的那样。它没有显示任何编译错误,但似乎也不起作用 x>1 < /C> >分组为(5>x)> 1 < /COD> < < /P>
c+中的两个比较运算符+;像蟒蛇 5 > x > 1代码> C++中的工作,就像Python中的那样。它没有显示任何编译错误,但似乎也不起作用 x>1 < /C> >分组为(5>x)> 1 < /COD> < < /P>,python,c++,logic,comparison-operators,Python,C++,Logic,Comparison Operators,(5>x)为false或true,因此该值永远不会大于1,因为false和true分别转换为0和1。因此 5 > x > 1 在C++中,p>是 false ,对于任何代码< x>代码>。所以在C++中,你需要用较长的表格写出你真正想要的表达式。 x > 1 && x < 5 x>1&&x(常数T和lhs、常数T和rhs){ 返回{rhs.value,lhs>rhs.value}; } friend双向比较运算符>(常量双向比较和左侧、常量T和右侧){
(5>x)
为false
或true
,因此该值永远不会大于1,因为false
和true
分别转换为0
和1
。因此
5 > x > 1
在C++中,p>是<代码> false <代码>,对于任何代码< x>代码>。所以在C++中,你需要用较长的表格写出你真正想要的表达式。
x > 1 && x < 5
x>1&&x<5
我从不满足于你不能选择。。。因此,从理论上讲,你可以像这样重载操作符(只是一个草图,但我想你会明白这一点):
#包括
模板
结构双向比较{
T值;
bool cond=真;
friend双向比较运算符>(常数T和lhs、常数T和rhs){
返回{rhs.value,lhs>rhs.value};
}
friend双向比较运算符>(常量双向比较和左侧、常量T和右侧){
返回{rhs,lhs.cond&&lhs.value>rhs};
}
运算符bool(){
返回条件;
}
};
int main(){
双向比较x{3};
如果(15>x>1){
std::它能正常工作吗。你能给出一个失败的例子吗?((795>x>4)和&&(595>y>4))
即使当(x,y)是(400300)@GarbageCollector时,这个条件也返回false。问题不是它是否正常工作,问题是它是否与python中的工作方式相同,答案是明确的“否”@Zinki你能详细说明一下这两种语言在使用上的区别吗?@Vikramark:下面Bathsheba的回答很清楚地说明了这一特殊情况下的区别。如果你想知道一般情况下两种语言在用法上的差异,那就有点超出了这个问题的范围,但可能存在一些问题有一些很好的介绍性资源,可以让程序员从一个地方迁移到另一个地方。
#include <iostream>
template <class T>
struct TwoWayComparison {
T value;
bool cond = true;
friend TwoWayComparison operator >(const T& lhs, const TwoWayComparison& rhs) {
return {rhs.value, lhs > rhs.value};
}
friend TwoWayComparison operator >(const TwoWayComparison& lhs, const T& rhs) {
return {rhs, lhs.cond && lhs.value > rhs};
}
operator bool() {
return cond;
}
};
int main() {
TwoWayComparison<int> x{3};
if (15 > x > 1) {
std::cout << "abc" << std::endl;
}
}