按位运算符错误输出

时间:2018-12-05 12:55:14

标签: c bit-manipulation operators

问题:https://www.hackerrank.com/challenges/bitwise-operators-in-c/problem

我使用C尝试了此问题,但输出结果为

1
5
1

代替

2
3
3

我在此代码中找不到错误:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
//Complete the following function.


void calculate_the_maximum(int n, int k)
{

    int answer1=0;
    int answer2=0;
    int answer3=0;

      for(int i=1;i<n;i++)
      {
          for(int j=i+1; j<=n;j++)
          {
              if((i&j >=answer1) && (i&j < k))
              {
                  answer1 = (i&j);
              }

              if((i|j >=answer2) && (i|j < k))
              {
                  answer2 = (i|j);
              }

              if((i^j >=answer3) && (i^j < k))
              {
                  answer3 = (i^j);
              }
          }
      }

    printf("%d\n%d\n%d",answer1,answer2,answer3);
}


int main()
{
    int n, k;

    scanf("%d %d", &n, &k);
    calculate_the_maximum(n, k);

    return 0;
}

1 个答案:

答案 0 :(得分:0)

我不喜欢给出完整的答案,但是自从我解决了问题后,我希望它能为您提供帮助。
我把它分解了,这样会更容易理解
观看简短的if陈述2

transactionType = TransactionType.All