这是一些代码。
long long bitmap2 = 1;
printf("%d\n", bitmap2 & 1);
输出为 0,但我期待 1。我该如何解决这个问题?(我尝试过 1LL 而不是 1 和 uint64_t 而不是 long long;两者都给出了相同的答案 0。)
这是一些代码。
long long bitmap2 = 1;
printf("%d\n", bitmap2 & 1);
输出为 0,但我期待 1。我该如何解决这个问题?(我尝试过 1LL 而不是 1 和 uint64_t 而不是 long long;两者都给出了相同的答案 0。)
您目前看到的是未定义的行为;您需要确保格式说明符和参数匹配。因此,请使用以下方法之一:
printf("%lld\n", bitmap2 & 1);
printf("%d\n", (int)(bitmap2 & 1));
有关. _ _printf
但是,如果printf
格式字符串与您提供的参数类型不匹配,大多数编译器都会警告您。例如,如果我在 GCC 中使用-Wall
标志编译您的代码,我会得到以下信息:
warning: format '%d' expects type 'int', but argument 2 has type 'long long int'
我认为你应该使用printf("%d\ll", bitmap2 & 1)
而不是printf("%d\n", bitmap2 & 1)
如果你想打印很长。