我的朋友告诉我,存在一个特殊的循环,它不是'while'循环或'do while'循环。
是否有人知道它的名称以及使用它的正确语法?
答案 0 :(得分:16)
for循环可能吗?
for (i = 0; i < 15; ++i) {
/* do stuff */
}
答案 1 :(得分:10)
也许是goto循环?这很特别。
start:
/* do stuff */
if ( !done ) goto start;
答案 2 :(得分:10)
c
中有3种循环。
for循环:http://cprogramminglanguage.net/c-for-loop-statement.aspx
for (initialization_expression;loop_condition;increment_expression){
// statements
}
while循环:http://cprogramminglanguage.net/c-while-loop-statement.aspx
while (expression) {
// statements
}
do while循环:http://cprogramminglanguage.net/c-do-while-loop-statement.aspx
do {
// statements
} while (expression);
你可以使用函数模拟循环:
模拟do while循环:
void loop(int repetitions){
// statements
if(repetitions != 0){
loop(repetitions - 1);
}
}
模拟while循环:
void loop(int repetitions){
if(repetitions != 0){
// statements
loop(repetitions - 1);
}
}
答案 3 :(得分:9)
也许是信号处理程序循环?这很特别。
#include <signal.h>
void loop(int signal)
{
if ( !done ) {
/* do stuff */
raise(SIGINT);
}
}
int main() {
signal(SIGINT, loop);
raise(SIGINT);
return 0;
}
答案 4 :(得分:7)
也许是一个setjmp循环?这很特别。
static jmp_buf buf;
int i = 0;
if ( setjmp(buf) < end ) {
/* do stuff */
longjmp(buf, i++);
}
答案 5 :(得分:6)
有for
循环,虽然我不知道如何特殊我会考虑它。
答案 6 :(得分:2)
并且不要忘记递归
void doSomething(int i)
{
if(i > 15)
return;
/* do stuff */
doSomething(i + 1);
}
答案 7 :(得分:0)
你遗漏了for(; true;)循环
答案 8 :(得分:0)
我的回答here可以帮助您了解C for loop 的工作原理
答案 9 :(得分:0)
无限循环?
有(;;){ }
我喜欢这个: - )
答案 10 :(得分:0)
Y combinator循环?这个特别足以成为苹果(现在)。还特别容易在整个地方泄漏记忆
#include <stdio.h>
#include <Block.h>
typedef void * block;
typedef block (^block_fn)(block);
typedef void (^int_fn)(int);
int main(int argc, char ** argv) {
block_fn Y = ^ block(block f) {
return ((block_fn) ^ block(block_fn x) {
return x(x);
})(^ block(block_fn x) {
return ((block_fn)f)(Block_copy(^ block(block y) {
return ((block_fn)(x(x)))(y);
}));
});
};
int_fn loop = Y(^ block(int_fn f) {
return Block_copy(^ (int a) {
if (a <= 0) {
printf("loop done\n");
} else {
printf("loop %d\n", a);
f(a - 1);
}
});
});
loop(10);
return 0;
}