008
19.05.2008, 23:31 Uhr
0xdeadbeef
Gott (Operator)
|
Okay, zweiter Anlauf: 60
C++: |
int c;if(*s){f(s+1);for(;s[1]&&*s>s[1];*++s=c)c=*s,*s=s[1];}
|
bzw. in C99 59:
C++: |
if(*s){f(s+1);for(int c;s[1]&&*s>s[1];*++s=c)c=*s,*s=s[1];}
|
Was das Hauptprogramm angeht: printf(variable); ist äußerst schlechter Stil - insbesondere bei Benutzereingaben, aber auch sonst kann das daneben gehen. Was, wenn variable ein Prozentzeichen enthält? puts(variable); ist äquivalent zu printf("%s\n", variable);, allerdings in der Regel etwas performanter.
Was das definierte Verhalten angeht, die Argumentation ist die selbe wie bei i = a[i++] = ++i; = ist kein Sequenzpunkt, wenn mich grad nicht alles täuscht, daher kannst du dir nicht sicher sein, in welcher Reihenfolge die Nebeneffekte auftreten. Ich müsste das allerdings nachschlagen, und ich hab meinen C-Standard grad nicht hier. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 19.05.2008 um 23:37 Uhr von 0xdeadbeef editiert. |