Ich schaue auf String-Manipulation in C und ich verstehe nicht, warum die Anweisung s1[i] = s1[++i];
das erste H
durch das nächste Zeichen e
nicht ersetzen wird. Werfen Sie einen Blick auf den Code:Warum ändert dieser Code nicht die Zeichenfolge?
#include <stdio.h>
main()
{
char s1[] = "Hello world !";
for(int i = 0; s1[i] != '\0'; ++i)
s1[i] = s1[++i];
printf("%s", s1);
}
Er druckt Hello world !
statt el r
Weil 's1 [i] = s1 [++ i];' ist undefiniertes Verhalten. –
@Phylogenesis Oh okay genial Ich dachte, dass ++ ich nur für s1 [++ i] nicht für die ganze Aussage zählte. – ChiseledAbs
Mögliches Duplikat von [Sequenzpunkt im Array-Index] (http://stackoverflow.com/questions/37403357/sequence-point-in-array-index) –