Что означает в C ++ оператор If, за которым следуют точка с запятой вместо фигурных скобок? - PullRequest
2 голосов
/ 13 июля 2011

Я недавно просматривал пример кода декодера vp8, когда натолкнулся на это.

for(y=0; y<img->d_h >> (plane?1:0); y++) {
    int iLength = img->d_w >> (plane?1:0);
    iFrameCursor += iLength;

    if(fwrite(buf, 1, iLength, outfile)); //This semicolon
        buf += img->stride[plane];
}

Есть идеи, что означает выражение if?

Ответы [ 3 ]

15 голосов
/ 13 июля 2011

Точка с запятой здесь такая же, как если бы вы сказали { }. Это просто пустое утверждение.

Следующие строки кода делают одно и то же:

if(fwrite(buf, 1, iLength, outfile));

if(fwrite(buf, 1, iLength, outfile)) { }

fwrite(buf, 1, iLength, outfile);

Вероятно, это ошибка.

1 голос
/ 14 июля 2011

Если это двоеточие, вместо скобок используется .Это, вероятно, кажется ошибкой.

1 голос
/ 13 июля 2011
if (<expr>) <statement>

обычно оператор является блоком кода, но он может быть пустым (;).

код эквивалентен:

fwrite(buf, 1, iLength, outfile);
buf += img->stride[plane];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...