2016-03-23 9 views
-2

Warum kann ich nicht Smthng so schreiben?C - while Operator in for Schleife Initialisierer

int i, size; 
int *arr; 
... 
for(i = size - 1, while(arr[i] == 0) i--; i >= 0; i--) { ... } 
+0

Aus dem gleichen Grund, warum Sie nicht eine Menge Dinge schreiben kann - es ist nicht gültige C-Syntax. –

+0

Kurze Antwort - weil die Sprachgrammatik es nicht erlaubt; Die Steuerausdrücke in einer 'for'-Anweisung können keine anderen * Anweisungen * sein. Wie für * warum * die Grammatik so ist, müsstest du Dennis Ritchie fragen, und er ist nicht mehr da. –

+1

Da die Sprache nur * Ausdrücke * und keine Anweisungen erlaubt. –

Antwort

0

Dies ist nur keine gültige Syntax in C

Eine Lösung für das, was Sie vielleicht wollen:

int i, size; 
int *arr; 
... 
for(i = size - 1; i >= 0; i--) { 
    if (arr[i] == 0) 
     continue; 
    ... 
}