Die folgende Syntax gilt:Warum können Sie keine Variable im Ausdrucksteil einer do while-Schleife deklarieren?
while (int i = get_data())
{
}
Aber das Folgende nicht:
do
{
} while (int i = get_data());
Wir warum über den Norm-Entwurf sehen:
[N4140/6.4]
1
[ ...]condition: expression attribute-specifier-seqoptdecl-specifier-seq declarator = initializer-clause attribute-specifier-seqoptdecl-specifier-seq declarator braced-init-list
2
Die Regeln für die Bedingungen gelten sowohl für Auswahl-Aussagen und diefor
undwhile
Aussagen (6.5). [...]
[N4140/6.5]
1
Iterationsanweisungen angeben Looping.int i = get_data(); do { } while ((i = get_data())); // double parentheses sic
Was ist der Grund dafür:
iteration-statement:while
(condition) statementdo
statementwhile
(expression) ;
Stattdessen sind Sie etwas hässlich wie zu tun gezwungen?
Grund kann nicht sein, weil 'while' Bedingung außerhalb des' do-while' Bereichs liegt. Nun, warum können Sie nicht, am wahrscheinlichsten aufgrund von Grammatikeinschränkungen. – 101010
Hinweis, wir finden hier Links zu den [Normentwürfen] (http://stackoverflow.com/q/81656). –
Beachten Sie, dass Sie immer weitere Klammern umschließen können: '{int i; tue {...} während (...); } '. –