我在很多采访中发现了这个问题,我的老师问我同样的主要疑问是,如果我在C99标准中加入<stdbool.h>
,我会将其评估为(true)<c
或(false)>c
。需要比链接帖子更清晰的答案 - &gt; Usage of greater than, less than operators。
如何在C中评估a<b<c
或a>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");
}
提前谢谢。
答案 0 :(得分:7)
来自标准itself(关系运算符脚注)
表达式
a<b<c
不能解释为普通数学。 正如语法所示,它意味着(a<b)<c
;换句话说,如果a
小于b
,将1
与c
进行比较;否则,请将0
与c
进行比较。
答案 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)
小于a
,b
评估为a<b
。否则,1
。
如果0
(a<b
或1
)返回的值小于0
,则整数评估为c
。否则,1
。
来自spec
每个运算符
0
(小于),<
(大于),>
(小于或等于)和<=
(大于或如果指定的关系为真,则等于)将产生1,如果为假,则为0。)结果的类型为int。