所以我之前在我的一些教授的代码中以及在我的一些有更多编程经验的朋友的代码中看到过这种用法。
int number = 0;
while(number) {
a bunch of code
}
我的理解是,这个while循环本质上是没有条件的运行,我觉得它应该是while(number = 0) {
这不是在创造一个无限循环吗?但是在我使用过的情况下,它会以某种方式跳出循环。
编辑:在使用有问题的参数时执行。请注意,在切换情况下调用的两个函数将在它们完成后再次调用searchpatientdata。
此代码当前不工作,但在以前的构建中工作,此函数是相同的。它们也不改变选择变量。
while
循环中的条件可以是任何标量(数字或指针)类型的表达式。如果表达式的计算结果等于零,则该条件被视为假,如果非零则为真。(对于指针表达式,空指针等于零)。
所以while (number)
表示while (number != 0)
作为风格的问题,我更喜欢使用显式比较,除非变量在逻辑上是布尔条件(要么是bool
或_Bool
类型的东西,或者是某种整数类型的东西,其唯一的意义值是true和false)——但不是每个人都同意我的观点,while (foo)
是while (foo != 0)
的一种非常常见的表达方式。
同样适用于if
、do
-while
或for
语句中的条件。
注意,在你的例子中:
int number = 0;
while(number) {
// a bunch of code
}
循环体永远不会执行,因为进入循环时number
等于零。更实际的情况是:
int number = some_value;
while (number) {
// a bunch of code *that can change the value of number*
}
C语言中任何需要布尔值的地方,任何数字都将像这样计算:
- 0→false
- 不为零→true
From C reference
重复执行一条语句,直到表达式的值为零。测试在每次迭代之前进行。
它是如何工作的?
- 入口控制回路 在循环执行前检查
- 条件
- never execute loop
- 如果condition为false, while的末尾没有分号声明
根据OP的问题,是的While (Variable_name)
被评估为True
的例子:
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
int num=1;
while(true)
{
if(num==5)
{
break;
}
printf("%dn",num);
num++;
}
return 0;
}