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

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

它可以很好地编译g++ -std=c++98,但在标准细节方面我不信任编译器。

4

2 回答 2

7

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

特别是,在语言语法中,以下是等价的(都是simple-declarations):

int i(0);
int i = 0;
于 2012-08-14T20:22:47.970 回答
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 )

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

于 2012-08-14T20:51:09.623 回答