c - 比较常量时在哪里可以使用&和==?有什么不同?

标签 c windows winapi

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

file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY

和:

file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY

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

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

最佳答案

规则很简单:

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

对于 dwFileAttributes,文档说:

The file attributes of a file. For possible values and their descriptions, see ...

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

关于c - 比较常量时在哪里可以使用&和==?有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15622977/

相关文章:

Python - 将 PyInt 转换为 C int

c++ - 时间功能有时有效有时无效

c++ - 相同大小的 Win32 加密

delphi - 如何使用 Inno Setup 获取本地 IP 地址

C++ GUI 窗口绘制了代码不应该绘制的形状

c - 试图防止堆栈溢出时出现意外结果

c - 如何获取并打印 wchar_t 的第 n 个字符?

linux - 适用于 Windows 和 Linux 操作系统的免费自动化工具

c++ - 如何将现有代码/位图分配给 MFC

c++ - 转储监 Windows 口中 "RtlpAnalyzeHeapFailure"的含义