为什么不将条件求和中的两个和等同为true?

时间:2018-09-05 23:28:44

标签: c

我试图返回左手边的总和等于右手边的索引。但是我的默认值为-1。为什么条件评估结果不为真?

代码如下:

#include <stdio.h>

int find_even_index(const int *values, int length)
{
  int count = 0;
  int sumL = 0;
  int sumR = 0;

  while(count < length)
  {
    sumR += values[count];
    count++;
  }
  count = 0;

  while(count < length)
  {
    sumL += values[count];
    sumR -= values[count];
    printf("sumL = %d\n", sumL);
    printf("sumR = %d\n", sumR);
    if(sumL == sumR)//why doesn't this condition work?
    {
      return count;
    }

    count++;
  }

  return -1;
}

int main (void)
{

  int arr[] = { 1,2,3,4,3,2,1 };
  printf("%d\n", (find_even_index(arr, 7)));

  return 0;
}

1 个答案:

答案 0 :(得分:2)

因为您要在对两个数字进行加减后进行比较。因此,目前它们将是相同的:

sumL = 6; sumR = 10

然后将4加到sumL,然后将4加到sumR:

sumL = 10; sumR = 6

然后您进行比较并获得不同的值。您必须在两次操作之间签入。