for (int i(0); i < 10; ++i) { ... }
int i(0)
标准 C++ 中是否始终允许 for 循环初始化程序中的语法?
它可以很好地编译g++ -std=c++98
,但在标准细节方面我不信任编译器。
for (int i(0); i < 10; ++i) { ... }
int i(0)
标准 C++ 中是否始终允许 for 循环初始化程序中的语法?
它可以很好地编译g++ -std=c++98
,但在标准细节方面我不信任编译器。
是的。这是一个简单的变量声明(语言语法中的简单声明),在 C++ for 循环的for-init 语句中明确允许(与当时的 C 相对)。
特别是,在语言语法中,以下是等价的(都是simple-declarations):
int i(0);
int i = 0;
以下是《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++ 中一直允许使用该语法。