我正在尝试做一个看起来像这样的for循环。
int a = 3;
int b;
int c = 20;
for ( a = 1; a < b < c; ++a )
但程序不能像这样工作。我怎么想正确说明中间的一个&lt; b&lt; C吗?
答案 0 :(得分:8)
将a < b < c
更改为a < b && b < c
原因是,<
是从左到右进行评估的,因此您的语句的评估方式如下:
a < b < c --> (a < b) < c
(a < b)
是一个布尔值(0或1),c
与该值进行比较。
如果您同时拥有a < b
和b < c
,因为<
为transitive,您就会知道数学a < b < c
成立。
注意:看一下C operator precedence table,您可以看到表达式a < b && b < c
中,首先评估了a < b
和b < c
,然后结果是“和”编辑。
在您的示例中,由于b
未设置,a < b
未知,但无论是0还是1,它肯定小于c
20。所以基本上你有一个无限循环。