作业帮 > 综合 > 作业

VC有个问题我不懂关于if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIR

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/30 09:50:31
VC有个问题我不懂
关于if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)这个语句:
我只知道&符号是位与操作符,也可能是地址操作符,
但是这个语句情况很不一样,
如果是&&我还可以理解,但出现的是一个就郁闷了.
代码如下:
#include
#include
int main(int argc,char* argv[])
{
char szFileName[] = "D:\\Program Files\\*.*";
WIN32_FIND_DATA findData;
HANDLE hFindFile;
hFindFile = ::FindFirstFile(szFileName,&findData);
if(hFindFile = INVALID_HANDLE_VALUE)
{
do
{
if(findData.cFileName[0] == '.')
continue;
if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
printf(" %s \n",findData.cFileName);
}while(::FindNextFile(hFindFile,&findData));
::FindClose(hFindFile);
}
return 0;
}
if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
这个判断语句是通过 将dwFileAttributes和FILE_ATTRIBUTE_DIRECTORY做位的与运算
来判断所找到的项目是不是文件夹
因为 FindFirstFile返回的 findData 中 dwFileAttributes项的值
可能是
FILE_ATTRIBUTE_ARCHIVE
FILE_ATTRIBUTE_COMPRESSED
FILE_ATTRIBUTE_DIRECTORY
FILE_ATTRIBUTE_HIDDEN
FILE_ATTRIBUTE_NORMAL
FILE_ATTRIBUTE_OFFLINE
FILE_ATTRIBUTE_READONLY
FILE_ATTRIBUTE_SYSTEM
FILE_ATTRIBUTE_TEMPORARY
中几项的组合值
findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
的结果只能是两种:
FILE_ATTRIBUTE_DIRECTORY 非零值 ,if条件是真
0 ,if条件是假
通过 findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
可以判断 dwFileAttributes项的值中是否 FILE_ATTRIBUTE_DIRECTORY,即判断所找到的项目是不是文件夹
这种对位运算结果的判断,在windows编程中有很多
如窗体属性,鼠标按键