我想知道之间有什么区别:
file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
和 :
file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY
当我使用第一个时,我会得到更多文件。
FILE_ATTRIBUTE_DIRECTORY
是文件属性常量,file.dwFileAttributes
是WIN32_FIND_DATA
Windows API 中的结构成员。
规则很简单:
==
。&
。在 的情况下dwFileAttributes
,文档说:
文件的文件属性。有关可能的值及其描述,请参阅...
复数的使用表明我的第二个要点适用。
&
是按位与运算,while==
是实际比较。
按位与
#define FLAG_1 1
#define FLAG_2 2
#define FLAG_3 4
#define FLAG_4 8
/* Check if FLAG_2 or FLAG_3 is enabled in flags */
if ((flags & FLAG_2) || (flags & FLAG_3)) {
...
}
有大量关于按位与和其他基本位运算的资源。维基链接。
定期比较
#define FLAG_1 1
#define FLAG_2 2
#define FLAG_3 4
#define FLAG_4 8
/* Check if flags is *equal* to FLAG_2 value */
if (flags == FLAG_2) {
...
}
file.dwFileAttributes
是用作标志的整数类型。每个位代表一个标志(0 或 1 表示设置或未设置)
FILE_ATTRIBUTE_DIRECTORY
是具有单个位集的整数。(该位表示文件是否为目录)
file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
FILE_ATTRIBUTE_DIRECTORY
如果设置了标志,则返回非零。
file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY
如果设置的唯一标志是 ,则返回 true FILE_ATTRIBUTE_DIRECTORY
。