while循环和算术运算符

时间:2014-04-22 03:58:20

标签: c while-loop arithmetic-expressions

int i = 5; 

while(i>5)

printf("%d",i);                

什么都不打印。

int i = 5;

while ( 5<i<10 )
{
printf("%d",i);                      
i++;
}

打印5

在这两种情况下都不应该是“不打印”的结果。因为5不小于5.

1 个答案:

答案 0 :(得分:9)

在C中,整数用作布尔值:0false,其他所有内容均为true。 正如@JonathanLeffler所指出的那样(参见下面的评论),在C99和C11中有一个标准的布尔数据类型,但它也扩展为整数常量(01)。 Link

当您编写类似5 < i < 10的表达式时,它被视为(5 < i) < 10,其中5 < i是布尔表达式,返回0。所以你得到(0) < 10,这是真的,这就是循环体的执行原因。 为了使循环条件正确,你可以使用类似的东西:

while (5 < i && i < 10)