最佳答案
在 Zlib 压缩库中有一个注释(在 Chromium 项目中使用) ,它暗示 C 中的 do-while 循环在大多数编译器上生成“更好”的代码。下面是它出现的代码片段。
do {
} while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
scan < strend);
/* The funny "do {}" generates better code on most compilers */
Https://code.google.com/p/chromium/codesearch#chromium/src/third_party/zlib/deflate.c&l=1225
是否有证据表明大多数(或任何)编译器会生成更好(例如更高效)的代码?
更新: Mark Adler,原作者之一,提供了一些背景信息在评论中。