strcmp 和 wcscmp
这是否
if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
(wcscmp(FileData.cFileName, L".") != 0) &&
(wcscmp(FileData.cFileName, L"..") != 0) )
与此相同:
if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
wcscmp(FileData.cFileName, L".") &&
wcscmp(FileData.cFileName, L"..") )
如果您使用 strcmp
而不是 wcscmp
?它应该检查名称与“..”和“.”的相等性(严格)。 (目录搜索)。
谢谢!
Is this
if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
(wcscmp(FileData.cFileName, L".") != 0) &&
(wcscmp(FileData.cFileName, L"..") != 0) )
the same as this:
if( (FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
wcscmp(FileData.cFileName, L".") &&
wcscmp(FileData.cFileName, L"..") )
And also if you use strcmp
instead of wcscmp
? It should check equality (strict) of the name with ".." and "." (directory search).
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果我没记错的话,这两个例子都做了同样的事情。
If I'm not mistaken, both examples do the same thing.
在 C 语言中,“true”被定义为“非零”。 “假”被定义为“零”。所以是的,它们是相同的。
不过,请务必小心返回非原始类型的方法;在 C++ 中,运算符重载可能会使“!= 0”实际上不与零进行比较:-P。不过,这里不是问题。
另外,如果您不放入括号,请确保您了解运算顺序。
In C, "true" is defined as "not zero". "false" is defined as "zero". So yes, they're the same.
Do be careful about methods that return non-primitive types, though; in C++, operator overloading could make "!= 0" not actually compare something with zero :-P. Not a problem here, though.
Also, if you don't put in the parentheses, make sure you understand the order of operations.