Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c+中的两个比较运算符+;像蟒蛇 5 > x > 1代码> C++中的工作,就像Python中的那样。它没有显示任何编译错误,但似乎也不起作用 x>1 < /C> >分组为(5>x)> 1 < /COD> < < /P>_Python_C++_Logic_Comparison Operators - Fatal编程技术网

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;
    }
}