1

我想知道之间有什么区别:

file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY

和 :

file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY

当我使用第一个时,我会得到更多文件。

FILE_ATTRIBUTE_DIRECTORY是文件属性常量,file.dwFileAttributesWIN32_FIND_DATAWindows API 中的结构成员。

4

3 回答 3

3

规则很简单:

  • 当变量可以只包含一个值时,您可以使用等式运算符 进行测试==
  • 当变量可以保存零个、一个或多个标志时,您可以使用按位和运算符测试标志的存在&

在 的情况下dwFileAttributes,文档说:

文件的文件属性。有关可能的值及其描述,请参阅...

复数的使用表明我的第二个要点适用。

于 2013-03-25T19:34:37.817 回答
2

&是按位运算,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) {
    ...
}
于 2013-03-25T19:28:21.777 回答
1

file.dwFileAttributes是用作标志的整数类型。每个位代表一个标志(0 或 1 表示设置或未设置)

FILE_ATTRIBUTE_DIRECTORY是具有单个位集的整数。(该位表示文件是否为目录)

file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORYFILE_ATTRIBUTE_DIRECTORY如果设置了标志,则返回非零。

file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY如果设置的唯一标志是 ,则返回 true FILE_ATTRIBUTE_DIRECTORY

于 2013-03-25T19:23:46.317 回答