在C ++中,if语句后跟分号而不是大括号是什么意思?

时间:2011-07-13 19:53:14

标签: c++ if-statement

我最近看到了一些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 个答案:

答案 0 :(得分:15)

这里的分号与您说{ }的分号相同。这只是一个空洞的陈述。

以下代码行都做同样的事情:

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

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

fwrite(buf, 1, iLength, outfile);

这可能是一个错误。

答案 1 :(得分:1)

if (<expr>) <statement>

通常该语句是一个代码块,但它可以是一个空的语句(;)。

代码相当于:

fwrite(buf, 1, iLength, outfile);
buf += img->stride[plane];

答案 2 :(得分:1)

如果是冒号,则使用instead of brackets。这似乎是一个错误。