1

私は間の違いを知りたいです:

file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY

と :

file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY

最初のものを使用すると、より多くのファイルを取得します。

FILE_ATTRIBUTE_DIRECTORYはファイル属性定数でfile.dwFileAttributesあり、WIN32_FIND_DATAWindowsAPIの構造体メンバーです。

4

3 に答える 3

3

ルールは単純です:

  • 変数が正確に1つの値を保持できる場合は、等式演算子を使用してテストします==
  • 変数がゼロ、1つ以上のフラグを保持できる場合、ビットごとの演算子、でフラグの存在をテストします&

の場合dwFileAttributes、ドキュメントには次のように記載されています。

ファイルのファイル属性。可能な値とその説明については、...を参照してください。

複数形の使用は、私の箇条書きの2番目が適用されることを示しています。

于 2013-03-25T19:34:37.817 に答える
2

&はビット単位演算==ですが、実際の比較です。

ビットごとのAND

#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)) {
    ...
}

ビット単位のANDおよびその他の基本的なビット演算に関するリソースはたくさんあります。Wikiリンク

定期的な比較

#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は、1ビットが設定された整数です。(そのビットは、ファイルがディレクトリであるかどうかを表します)

file.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORYFILE_ATTRIBUTE_DIRECTORYフラグが設定されている場合はゼロ以外を返します。

file.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY設定されているフラグが。のみの場合はtrueを返しますFILE_ATTRIBUTE_DIRECTORY

于 2013-03-25T19:23:46.317 に答える