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

for ループ初期化子内のint i(0)構文は、標準 C++ で常に許可されていますか?

で問題なくコンパイルされますg++ -std=c++98が、標準の詳細に関してはコンパイラを信頼していません。

4

2 に答える 2

7

はい。これは単純な変数宣言 (言語文法における単純な宣言) であり、C++ for ループのfor-init-statement で(当時の C とは対照的に) 明示的に許可されていました。

特に、言語文法では、以下は同等です (どちらも単純宣言です)。

int i(0);
int i = 0;
于 2012-08-14T20:22:47.970 に答える
6

The C++ Programming Languageの Appendix 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 に答える