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

Pyt*_*ord 2 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];
}
Run Code Online (Sandbox Code Playgroud)

知道if语句是什么意思吗?

Jam*_*lis 15

这里的分号和你说的一样{ }.这只是一个空洞的陈述.

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

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

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

fwrite(buf, 1, iLength, outfile);
Run Code Online (Sandbox Code Playgroud)

这可能是一个错误.

  • @Danny:没有人说它不应该.但是,它几乎肯定不是原始代码作者的意图; 这不仅是一件非常愚蠢的事情,而且还要看下一行的缩进. (6认同)
  • @Danny一个程序可能会编译并运行而不会崩溃,这并不意味着它可以完成预期的工作. (2认同)