将项目从Python转换为C#时,我在语法族中发现了一些有趣的差异。然而,我陷入了困境,仍然无法理解和理解C#中比较运算符的不同行为。运算符谜语
在治愈这种好奇心的过程中,我考虑了几种C语言家族的语言; C,C++,C#,Java,Javascript ..并验证了行为。这里是如何蒸腾:
Let a=2, b=3, c=4, d=5;
现在,考虑下面的表达式:
a < a < a // returns true
c < b < a // returns true
c > b > a // returns false
a <c> b // returns false
如果到right-associativity是因为,然后在JavaScript下面的代码不应该像:
console.info(a < false); // returns false
console.info(a < a); // returns false
console.info(a < a < a); // returns true, as opposed to returning false
这里是C/C++版本
int main(){
int a=2, b=3, c=4, d=5;
printf("%s\n","false\0true"+6*(a < a < a)); // returns true
printf("%s\n","false\0true"+6*(c < b < a)); // returns true
printf("%s\n","false\0true"+6*(c > b > a)); // returns false
printf("%s\n","false\0true"+6*(a <c> b)); // returns false
return 0;
}
除了在Python,其中
a < a < a // returns false
c < b < a // returns false
c > b > a // returns true
a <c> b // returns true
任何人都可以解释为什么C家族的语言和Python是不同的计算表达式?
如果您使用文字而不是变量编写示例,此问题将更容易遵循。 – 2012-07-23 10:22:26