由于C没有bool
s,在使用
true
的适当变量是什么?
do
{
// ...
} while(true);
???
适当的C程序员应该
do
{
// ...
} while(1);
或是否保留一个特定变量来表示" s omething is not zero / NULL " ?
答案 0 :(得分:12)
现在通常我会看到
while(1) {
...
}
以前常见的是
for(;;) {
...
}
这一切都得到了重点。
答案 1 :(得分:10)
你的问题实际上不是关于bool
(如果你#include <stdbool.h>
,现代C 会有什么),这是关于编写无限循环的最佳方式。
常用习语是:
while (1) {
/* ... */
}
和
for (;;) {
/* ... */
}
后者看起来有点模糊,但它的定义很明确。可以省略for
循环头中的三个表达式中的任何一个;如果第二个表达式(它控制循环继续执行的时间)被省略,则默认为true。
while (1)
可能是最简单的方法 - 但有些编译器可能会警告一个总是正确的情况。 for (;;)
可能会避免这种情况,因为没有(明确的)表达式来警告。
编写无限循环(while (1 + 1 == 2)
等等有一些比较棘手的方法,但它们都不值得付出努力。
答案 2 :(得分:5)
如果你正在使用c89:
创建一个布尔定义:
typedef int bool;
#define true 1
#define false 0
或常数:
/* Boolean constants. */
#define TRUE 1
#define FALSE 0
这给了int一个含义。
或者(如本文其他地方所述)如果使用c99:
#include <stdbool.h>
我最近的大学经历是,他们要求你使用c89。
答案 3 :(得分:3)
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;
}
输出
1
2
注意:现代 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++;
}
输出
1
2
您可以查看bool in C
希望它对你有所帮助。