What is the proper equivalent of “while(true)” in plain C?
由于c没有
1 2 3 4 | do { // ... } while(true); |
????
一个合适的C程序员应该这样做吗?
1 2 3 4 | do { // ... } while(1); |
或者是否有一个特定的变量被保留来表示"某个非零/空的东西"?
通常现在我看到
1 2 3 | while(1) { ... } |
过去经常看到
1 2 3 | for(;;) { ... } |
这一切都说明了问题所在。
你的问题不是关于
常见的成语有:
1 2 3 | while (1) { /* ... */ } |
和
1 2 3 | for (;;) { /* ... */ } |
后者看起来有点模糊,但它定义得很好。
写一个无限循环有更复杂的方法(
如果您使用的是C89:
创建布尔定义:
1 2 3 | typedef int bool; #define true 1 #define false 0 |
或常量:
1 2 3 | /* Boolean constants. */ #define TRUE 1 #define FALSE 0 |
这给了int一个含义。
如果使用C99:
1 | #include <stdbool.h> |
我最近在大学的经验是,他们要求你使用C89。
http://en.wikipedia.org/wiki/c_data_types stdbool.h
c有
所以这个作品
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> #include<stdbool.h> int main(void) { int i=1; while(true) { if(i==3){ break; } printf("%d ",i); i++; } return 0; } |
产量
1 2 | 1 2 |
注:现代C99支持
如果您使用的是C89/90,那么您可以使用这里其中一个答案中提到的
1 2 3 4 5 6 7 8 9 10 11 12 | typedef enum {false, true } bool; bool b=true; int i=1; while(b) { if(i==3){ break; } printf("%d ",i); i++; } |
输出
1 2 | 1 2 |
你可以在C里检查这个胸部
希望对你有帮助。