为什么可以通过额外的比较来检查枚举位掩码?

Max*_*Max 1 c syntax

我最近遇到过这几次:

if ((flags & PERFORM_DELETION_CONCURRENTLY) == PERFORM_DELETION_CONCURRENTLY)
   ...
Run Code Online (Sandbox Code Playgroud)

额外比较的原因是什么?为什么不呢?

if (flags & PERFORM_DELETION_CONCURRENTLY)
   ...
Run Code Online (Sandbox Code Playgroud)

我的猜测是,当编译器更严格的时候,这是一个剩下的习惯,可以在过去的日子里保持警告.

Dan*_*her 6

掩模中还可能存在多个位集.在这种情况下,两个比较具有不同的语义.