“a <b <c”或=“”“a =”“> b&gt; c”如何在C

时间:2017-12-20 18:49:08

标签: c

我在很多采访中发现了这个问题,我的老师问我同样的主要疑问是,如果我在C99标准中加入<stdbool.h>,我会将其评估为(true)<c(false)>c。需要比链接帖子更清晰的答案 - &gt; Usage of greater than, less than operators

如何在C中评估a<b<ca>b>c 例如,在以下代码中。

# include<stdbool.h> 
int main(void){
    int a = 1,b=2,c=3;
    if(a<b<c)
        printf("a great b great c");
    }

提前谢谢。

2 个答案:

答案 0 :(得分:7)

来自标准itself(关系运算符脚注)

  

表达式a<b<c不能解释为普通数学。   正如语法所示,它意味着(a<b)<c;换句话说,如果a   小于b,将1c进行比较;否则,请将0c进行比较。

答案 1 :(得分:0)

运算符关联性表明type Conn struct { net.Conn idleTimeout time.Duration } func (c *Conn) Read(b []byte) (int, error) { err := c.Conn.SetReadDeadline(time.Now().Add(c.idleTimeout)) if err != nil { return 0, err } return c.Conn.Read(b) } 等同于a<b<c(而不是(a<b)<c)。

如果a<(b<c)小于ab评估为a<b。否则,1

如果0a<b1)返回的值小于0,则整数评估为c。否则,1

来自spec

  

每个运算符0(小于),<(大于),>(小于或等于)和<=(大于或如果指定的关系为真,则等于)将产生1,如果为假,则为0。)结果的类型为int。