用于循环初始化的括号内

时间:2012-08-14 20:18:55

标签: c++ syntax for-loop initialization parentheses

for (int i(0); i < 10; ++i) { ... }

在标准C ++中是否始终允许for循环初始化程序中的int i(0)语法?

它与g++ -std=c++98编译良好,但在标准细节方面,我不相信编译器。

2 个答案:

答案 0 :(得分:7)

是。它是一个简单的变量声明(语言语法中的简单声明),它在C ++中明确允许用于循环的 for-init-statement (与当时的C相反)。

特别是,在语言语法中,以下是等效的(都是简单声明):

int i(0);
int i = 0;

答案 1 :(得分:6)

以下是 C ++编程语言中的语法相关部分,附录A:

iteration-statement:
    ...
    for (for-init-statement condition_opt; expression_opt) statement

for-init-statement:
    ...
    simple-declaration

simple-declaration:
    decl-specifier-seq_opt init-declarator-list_opt;

init-declarator-list:
    init-declarator
    init-declarator-list , init-declarator

init-declarator:
    declarator initializer_opt

initializer:
    = initializer_clause
    ( expression-list )

所以是的,标准C ++中一直允许使用for (int i(0); ...语法。