C while循环与算术算子
不打印任何内容C while循环与算术算子,c,while-loop,arithmetic-expressions,C,While Loop,Arithmetic Expressions,不打印任何内容 int i = 5; while(i>5) printf("%d",i); inti=5; C中的(5整数用作布尔值:0为false,其他所有内容均为true。 正如@JonathanLeffler所指出的(见下面的评论),在C99和C11中有一个标准的布尔数据类型,但它也扩展为整数常量(0和1) 当你编写一个像5
int i = 5;
while(i>5)
printf("%d",i);
inti=5;
C中的(5整数用作布尔值:0
为false
,其他所有内容均为true
。
正如@JonathanLeffler所指出的(见下面的评论),在C99和C11中有一个标准的布尔数据类型,但它也扩展为整数常量(0
和1
)
当你编写一个像5
这样的表达式时,它被当作(5
,其中5
是一个布尔表达式,返回0
。因此你得到了(0)<10
,这是真的,这就是执行循环体的原因。
为了使循环条件正确,应使用以下方法:
int i = 5;
while ( 5<i<10 )
{
printf("%d",i);
i++;
}
while(5
在C中,整数用作布尔值:0
为false
,其他所有内容均为true
。
正如@JonathanLeffler所指出的(见下面的评论),在C99和C11中有一个标准的布尔数据类型,但它也扩展为整数常量(0
和1
)
当你编写一个像5
这样的表达式时,它被当作(5
,其中5
是一个布尔表达式,返回0
。因此你得到了(0)<10
,这是真的,这就是执行循环体的原因。
为了使循环条件正确,应使用以下方法:
int i = 5;
while ( 5<i<10 )
{
printf("%d",i);
i++;
}
while(5
5
在C语言中不应该有效。我同意,它应该是i>5&&i<10
@John。我现在很好奇编译器如何解析这样的条件。请注意,Python确实支持5
来表示您想要的意思,但绝大多数编程语言都将其解释为(5
当比较的结果是0
或1
时,这会产生一个无限长的循环,因为1<10
和0<10
都是真的,第一项的计算结果只能是0
或1
5
有效。这是C的一大优点,规则表达式解析是简单且一致的。5
在C中不应该有效。我同意,它应该是i>5&&i<10
@John。我现在很好奇编译器会如何解析这样的条件。请注意,Python确实支持5
来表达您的意思,但绝大多数编程语言都支持5
uages将其解释为(5
当比较的结果是0
或1
时,这会产生一个无限长的循环,因为1<10
和0<10
都是真的,第一项的计算结果只能是0
或1
5
有效。这是C的一大优点,规则表达式解析是简单而一致的。+1你比我快了3秒哈哈,完美的答案!在C99和C11中,有\u Bool
作为标准内置类型,而
将Bool
定义为\u Bool
的同义词(和true
定义为1
和false
定义为0
,以及定义为1
)@JonathanLeffler,谢谢!我现在编辑我的答案。+1你比我快了3秒哈哈,完美的答案!在C99和C11中,有\u Bool
作为标准内置类型,而
将Bool
定义为\u Bool
的同义词(和true
定义为1
和false
定义为0
,和定义为1
。@JonathanLeffler,谢谢!我现在编辑我的答案。