while循环和算术运算符

1 c arithmetic-expressions while-loop

int i = 5; 

while(i>5)

printf("%d",i);                
Run Code Online (Sandbox Code Playgroud)

没有打印.

int i = 5;

while ( 5<i<10 )
{
printf("%d",i);                      
i++;
}
Run Code Online (Sandbox Code Playgroud)

打印5

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

Fre*_*ame 9

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

当你写的语句,比如5 < i < 10,它是像对待(5 < i) < 10,其中5 < i是一个布尔表达式,它返回0.所以你得到了(0) < 10,这是真的,这就是循环体的执行原因.为了使循环条件正确,你应该使用类似的东西:

while (5 < i && i < 10)
Run Code Online (Sandbox Code Playgroud)

  • 在C99和C11中,`_Bool`是标准的内置类型,``stdbool.h>`定义`bool`作为`_Bool`的同义词(和`true`作为`1`和`false` as为'0`,`__ bool_true_false_defined`为`1`). (4认同)
  • +1你用3秒钟打败了我,哈哈哈,完美答案! (2认同)