Я смотрю на строковые манипуляции на C, и я не понимаю, почему оператор s1[i] = s1[++i];
не заменит первый H
следующим символом e
. Посмотрите на код:Почему эта часть кода не меняет строку?
#include <stdio.h>
main()
{
char s1[] = "Hello world !";
for(int i = 0; s1[i] != '\0'; ++i)
s1[i] = s1[++i];
printf("%s", s1);
}
Он печатает Hello world !
вместо el r
Поскольку 's1 [i] = s1 [++ i];' - неопределенное поведение. –
@Phylogenesis oh okay awesome Я думал, что это ++ я имел значение только для s1 [++ i] не для всего утверждения. – ChiseledAbs
Возможный дубликат [Точка последовательности в индексе массива] (http://stackoverflow.com/questions/37403357/sequence-point-in-array-index) –