如何编写不带变量的for循环?

时间:2019-02-13 13:47:08

标签: c++ c for-loop increment

我想直接写一个for循环而没有任何变量。有可能吗?

示例:

for (1; 1 <= 4; ++) {
  printf ("Loop working\n");
}

预期输出:

Loop working
Loop working
Loop working
Loop working

3 个答案:

答案 0 :(得分:2)

您需要一个变量来保持计数,但是您可以将其隐藏。

#include <stdio.h>

#define JOIN(a, b) (a ## b)
// WARNING: don't LOOP in the same line
#define LOOP(n) for (unsigned JOIN(HIDDEN, __LINE__) = 0; JOIN(HIDDEN, __LINE__) < n; JOIN(HIDDEN, __LINE__)++)

int main(void) {
    LOOP(4) {
        printf("foo");
        LOOP(2) printf(" bar");
        puts("");
    }
    return 0;
}

See code running on ideone

输出

foo bar bar
foo bar bar
foo bar bar
foo bar bar

答案 1 :(得分:-1)

是的,有可能。

for(; ;);

但这将是一个无限循环。添加一个break语句,它将仅运行一次

for(; ; )
    break;

或者您可以在循环内使用增量和条件语句

int i = 0;

for(; ;){
    printf ("Loop working\n");
    ++i;
    if( i >= 4)
        break;
}

答案 2 :(得分:-1)

要终止循环,您需要保持状态,表明您在哪一点。

通常,为此使用循环变量。

您还可以使用递归,在这种情况下,状态的编码方式不同,但仍然需要:

Property