C Предупреждение: выражение без эффекта

При попытке скомпилировать мою программу с помощью:

gcc -pedantic -Wall -ansi 

Я получаю предупреждение: предупреждение: оператор без эффекта

Ссылаясь на эту строку:

for(currentDirection; currentDirection <= endDirection; currentDirection++)

Может ли кто-нибудь помочь мне с этим?

Ответ 1

currentDirection; ничего не делает.

Замените свою строку на

for(; currentDirection <= endDirection; currentDirection++)

Или, если вы просто забыли инициализировать переменную:

for(currentDirection = 0; currentDirection <= endDirection; currentDirection++)

Ответ 2

for(currentDirection; currentDirection <= endDirection; currentDirection++)
 // ^^^^^^^^^^^^^^^ Its saying about the above statement.

У первого оператора должно быть задание, которое не происходит в этом случае и является причиной предупреждения. Убедитесь, что значение currentDirection присвоено допустимому значению или оно может содержать мусор и может впоследствии вызвать проблемы.

Это похоже на то, когда сказано -

 int i = 10 ;
 i ;   // This statement is valid but has no effect.

Ответ 3

По моему опыту эта проблема возникает, когда вы делаете что-то вроде строк

int x = 0;
for(x = 0;x < num; x++){}

Когда вы объявляете свой цикл, и вы уже инициализируете свою переменную x, вам не нужно объявлять ее во второй раз. Так что либо:

int x = 0;
for(; x < num; x++){}

или

int x;
for(x = 0; x < num; x++){}