C与Python - 条件语句中的运算符优先级

Ash*_*han 0 c c++ python operator-precedence comparison-operators

C如何处理条件语句,如n >= 1 <= 10

我最初认为它将被评估为n >= 1 && 1 <= 10,因为它将在Python中进行评估.因为1 <= 10总是如此,所以第二个部分and是冗余的(布尔值X && True等于布尔值X).

但是,当我运行它时n=0,条件被评估为true.事实上,条件总是似乎评估为真.

这就是我看到的例子:

if (n >= 1 <= 10)
  printf("n is between 1 and 10\n");
Run Code Online (Sandbox Code Playgroud)

小智 10

>= 运算符从左到右进行求值,因此它等于:

if( ( n >= 1 ) <= 10)
    printf("n is between 1 and 10\n");
Run Code Online (Sandbox Code Playgroud)

第一个( n >= 1 )被评估为真或假,等于1或0.然后将1或0的结果与result <= 10总是评估为真的结果进行比较.因此,printf("n is between 1 and 10\n");将始终打印该声明