Реализация оператора приращения ++
У меня есть строка, в которой я должен подсчитать минимальное количество символов для удаления, так что после модификации нет двух соседних символов, например, если бы мне дали строку, такую как RRGB, мой код должен вывести 1 (удалить дубликат R) аналогичным образом и для RRRRR его 4 (удалить 4 лишних R)
ссылка на вопрос:(на всякий случай я прилагаю ссылку, если она не ясна) http://codeforces.com/problemset/problem/266/A
код, который я первоначально написал, был:
#include<stdio.h>
int main(void){
char k,s[51];
int n,l,i,c=0;
scanf("%d",&n);
scanf("%s",s);
for(i=1;i<n+1;){
while(s[i++]==s[i-1]); /*LINE OF INTEREST */
++c;
}
printf("%d",n-c);
return 0;
}
В то время как заявление было от другой реализации ребят для другой проблемы. Переходя к вопросу
оператор while while(s[i++]==s[i-1]); приводит к ошибке сегментации (дамп ядра), а (s[i-1]==s[i++]) работает отлично и дает правильный ответ на мое решение
насколько они разные?
ПРИМЕЧАНИЕ: отправка других парней (Принятая отправка на Codeforces) тоже не сработала и привела к бесконечному циклу, как мой код, и при изменении на while(s[i-1]==s[i++]) снова работала нормально, как мой код так что-то вроде того, что раньше работало на старом компиляторе C, или это не имеет к этому никакого отношения, и оба утверждения разные?