由于C没有bools,true在使用的算法中代替什么是适当的变量
do
{
// ...
} while(true);
Run Code Online (Sandbox Code Playgroud)
???
一个合适的C程序员应该这样做
do
{
// ...
} while(1);
Run Code Online (Sandbox Code Playgroud)
或者是否有一个特定的变量保留意味着" 不是零/空 "的东西?
U2E*_*EF1 15
通常现在我明白了
while(1) {
...
}
Run Code Online (Sandbox Code Playgroud)
以前常见
for(;;) {
...
}
Run Code Online (Sandbox Code Playgroud)
这一切都得到了重点.
Kei*_*son 10
你的问题是不是真正的bool(其中现代C 也有,如果你#include <stdbool.h>),它是关于写一个无限循环的最佳方式.
常见的习语是:
while (1) {
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
和
for (;;) {
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
后者看起来有点模糊,但它的定义很明确.for可以省略循环头中的三个表达式中的任何一个; 如果省略了控制循环何时继续执行的第二个表达式,则默认为true.
while (1)可能是最简单的方法 - 但有些编译器可能会警告一个始终正确的条件.for (;;)可能会避免这种情况,因为没有(明确的)表达来警告.
编写无限循环有一些比较棘手的方法(while (1 + 1 == 2)等等,但它们都不值得付出努力.
如果您使用的是c89:
创建一个布尔定义:
typedef int bool;
#define true 1
#define false 0
Run Code Online (Sandbox Code Playgroud)
或常数:
/* Boolean constants. */
#define TRUE 1
#define FALSE 0
Run Code Online (Sandbox Code Playgroud)
这给了int一个含义.
或者(如本文其他地方所述)如果使用c99:
#include <stdbool.h>
Run Code Online (Sandbox Code Playgroud)
我最近的大学经历是,他们要求你使用c89.
http://en.wikipedia.org/wiki/C_data_types#stdbool.h
C 有stbool.h头文件来使用bool变量。
所以这有效
#include <stdio.h>
#include<stdbool.h>
int main(void) {
int i=1;
while(true)
{
if(i==3){
break;
}
printf("%d\n",i);
i++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出
1
2
Run Code Online (Sandbox Code Playgroud)
注意:现代C99支持bool变量,但C89/90不支持。
如果您使用的是 C89/90,那么您可以使用typedef或constants此处的答案之一中提到的,或者您也可以enums像这样使用
typedef enum {false, true } bool;
bool b=true;
int i=1;
while(b)
{
if(i==3){
break;
}
printf("%d\n",i);
i++;
}
Run Code Online (Sandbox Code Playgroud)
输出
1
2
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助。