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.
在C中,整数用作布尔值:0是false,其他一切都是true.正如@JonathanLeffler所指出的那样(参见下面的评论),在C99和C11中有一个标准的布尔数据类型,但它也扩展为整数常量(0和1).链接.
当你写的语句,比如5 < i < 10,它是像对待(5 < i) < 10,其中5 < i是一个布尔表达式,它返回0.所以你得到了(0) < 10,这是真的,这就是循环体的执行原因.为了使循环条件正确,你应该使用类似的东西:
while (5 < i && i < 10)
Run Code Online (Sandbox Code Playgroud)