什么(;;)和while(); 在C中的意思

我正在看一些示例代码,我看到有人这样做了

for (;;) { // ... } 

这相当于while(1) { }

而什么while(condition); 做? 我没有理由把';'放在后面 而不是{}

是,

 for(;;){} 

是一个无限循环

而什么(条件); 做? 我没有理由把’;’放在后面 代替 {}

那么,你的问题是,如果你放了或者你没有在那之后放一个分号,会发生什么? 计算机将分号标识为空语句。

试试这个:

 #include int main(void){ int a = 5, b = 10; if (a < b){ printf("True"); } while (a < b); /* infinite loop */ printf("This print will never execute\n"); return 0; } 

而只是通过一个语句循环,直到条件为假。 它不必是复合语句(这个东西:{}),它可以是任何语句。 ; 是一个什么都不做的声明。

 while(getchar() != '\n'); 

例如,会循环直到你按Enter键。 虽然这是不好的做法,因为它会占用线程; 在循环中添加对sleep方法的调用更好。

for(;;)while(1)都是无限循环,并编译为相同的操作码:

 L2: jmp L2 

这意味着没有速度差异,因为拆卸完全相同。