ここにいくつかのコードがあります。
long long bitmap2 = 1;
printf("%d\n", bitmap2 & 1);
出力は 0 ですが、期待しているのは 1 です。これを修正するにはどうすればよいですか? (1 の代わりに 1LL を試し、long long の代わりに uint64_t を試しました。どちらも同じ答えの 0 を返しました。)
ここにいくつかのコードがあります。
long long bitmap2 = 1;
printf("%d\n", bitmap2 & 1);
出力は 0 ですが、期待しているのは 1 です。これを修正するにはどうすればよいですか? (1 の代わりに 1LL を試し、long long の代わりに uint64_t を試しました。どちらも同じ答えの 0 を返しました。)
現在表示されているのは未定義の動作です。フォーマット指定子と引数が一致していることを確認する必要があります。したがって、次のいずれかを使用します。
printf("%lld\n", bitmap2 & 1);
printf("%d\n", (int)(bitmap2 & 1));
の完全なドキュメントについては、たとえばhttp://en.cppreference.com/w/c/io/fprintfprintf
を参照してください。
printf
ただし、ほとんどのコンパイラは、書式文字列と指定した引数の型が一致しない場合に警告を発します。たとえば、-Wall
フラグを使用して GCC でコードをコンパイルすると、次のようになります。
warning: format '%d' expects type 'int', but argument 2 has type 'long long int'
長く長く印刷したい場合はprintf("%d\ll", bitmap2 & 1)
代わりに使うといいと思います。printf("%d\n", bitmap2 & 1)