Я получаю предупреждение, а не ошибку, и когда я игнорирую это предупреждение и в любом случае собираю / запускаю, мой код работает нормально. Я все еще волнуюсь из-за предупреждения, или, может быть, я просто хочу его понять.
Эта функция добавляет один символ в начало строки.
void s_pfx(char pf, char *s){
i = -1;
while(s[++i]);
s[i + 1] = '\0';
while(i)
s[i] = s[--i];
s[i] = pf;
}
Предупреждение в цикле while, когда я предварительно уменьшаю i. (У меня есть я как глобальная переменная.)
Предупреждение: «предупреждение: операция над« i »может быть неопределенной [-Wsequence-point]»
Я могу это исправить, используя
while(i){
s[i] = s[i - 1];
i--;
}
но почему я должен делать это таким образом? Кажется, что это съело бы время, возможно наносекунды, но это прибавит.
Я не понимаю, почему компилятор не может понять код. Это кажется довольно четким для меня. Я посмотрел на некоторые другие подобные вопросы / ответы, но это кажется намного проще.
Помощь! Спасибо.