A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/algorithm/../algorithm/../../cpp/../c/header/../language/for.html below:

for loop - cppreference.com

Executes a loop.

Used as a shorter equivalent of while loop.

[edit] Syntax attr-spec-seq(since C23)(optional) for ( init-clause ; cond-expression ; iteration-expression ) loop-statement [edit] Explanation

Behaves as follows:

(since C99)

init-clause, cond-expression, and iteration-expression are all optional. If cond-expression is omitted, it is replaced with a non-zero integer constant, which makes the loop endless:

for(;;) {
   printf("endless loop!");
}

loop-statement is not optional, but it may be a null statement:

for(int n = 0; n < 10; ++n, printf("%d\n", n))
    ; // null statement

If the execution of the loop needs to be terminated at some point, a break statement can be used anywhere within the loop-statement.

The continue statement used anywhere within the loop-statement transfers control to iteration-expression.

A program with an endless loop has undefined behavior if the loop has no observable behavior (I/O, volatile accesses, atomic or synchronization operation) in any part of its cond-expression, iteration-expression or loop-statement. This allows the compilers to optimize out all unobservable loops without proving that they terminate. The only exceptions are the loops where cond-expression is omitted or is a constant expression; for(;;) is always an endless loop.

As with all other selection and iteration statements, the for statement establishes block scope: any identifier introduced in the init-clause, cond-expression, or iteration-expression goes out of scope after the loop-statement.

(since C99)

attr-spec-seq is an optional list of attributes, applied to the for statement.

(since C23) [edit] Keywords

for

[edit] Notes

The expression statement used as loop-statement establishes its own block scope, distinct from the scope of init-clause, unlike in C++:

for (int i = 0; ; ) {
    long i = 1;   // valid C, invalid C++
    // ...
}

It is possible to enter the body of a loop using goto. When entering a loop in this manner, init-clause and cond-expression are not executed. (If control then reaches the end of the loop body, repetition may occur including execution of cond-expression.)

[edit] Example
#include <stdio.h>
#include <stdlib.h>
enum { SIZE = 8 };
int main(void)
{
    int array[SIZE];
    for(size_t i = 0 ; i < SIZE; ++i)
        array [i] = rand() % 2;
    printf("Array filled!\n");
    for (size_t i = 0; i < SIZE; ++i)
        printf("%d ", array[i]);
    putchar('\n');
}

Possible output:

Array filled!
1 0 1 1 1 1 0 0
[edit] References
[edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4