用于循环初始化的括号内

fre*_*low 1 c++ syntax for-loop initialization parentheses

for (int i(0); i < 10; ++i) { ... }
Run Code Online (Sandbox Code Playgroud)

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

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

eq-*_*eq- 7

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

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

int i(0);
int i = 0;
Run Code Online (Sandbox Code Playgroud)


fre*_*low 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 )
Run Code Online (Sandbox Code Playgroud)

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