int i = 5;
while(i>5)
printf("%d",i);
什么都不打印。
int i = 5;
while ( 5<i<10 )
{
printf("%d",i);
i++;
}
打印5
在这两种情况下都不应该是“不打印”的结果。因为5不小于5.
答案 0 :(得分:9)
在C中,整数用作布尔值:0
为false
,其他所有内容均为true
。
正如@JonathanLeffler所指出的那样(参见下面的评论),在C99和C11中有一个标准的布尔数据类型,但它也扩展为整数常量(0
和1
)。 Link
当您编写类似5 < i < 10
的表达式时,它被视为(5 < i) < 10
,其中5 < i
是布尔表达式,返回0
。所以你得到(0) < 10
,这是真的,这就是循环体的执行原因。
为了使循环条件正确,你可以使用类似的东西:
while (5 < i && i < 10)