Berichten: 68
Reg. datum: 07 juni 2007
Reg. datum: 07 juni 2007
Volgende stukje vind ik niet echt een ranzige manier om danwel de eerste index i te vinden met a[i] <= 0,quote:Herko_ter_Horst schreef op dinsdag 22 juli 2008 @ 11:41:
[...]
Nee, eerder:
code:
1 for(;doSomethingWithUglySideEffect(););
De reden dat het toegestaan is, is volgens mij wat Janoz hierboven zegt puur de syntax-definitie (stukje BNF):
code:
1 2 3 4 5 6 7 8 9 10if_statement ::= "if" "(" expression ")" statement ..... // blah, blah statement ::= ( expression ";" ) | ...... // blah, blah | ( ";" )
; is dus een legaal statement. Een uitzondering maken voor situaties waarin dat (waarschijnlijk) niet is wat je wilt is het mindere kwaad in zo'n geval (wil je dat wel, dan verhoog je "onnodig" de complexiteit van de syntax). Het heeft dus NIET tot doel het soort vieze constructies waar dit topic inmiddels vol mee staatmogelijk te maken.
danwel uit het array te lopen met i == N:
C:
1 | for (i=0; (i<N) && (a[i] > 0); i++) ; |
Ik moet zeggen dat de coding standard die wij hanteren wel een explicitiete empty statement vereist:
C:
1 | for (i=0; (i<N) && (a[i] > 0); i++) { /* empty */ }; |
Zo kan het statisch gecheckt worden en is duidelijk dat e.e.a. bedoeld is.
