为什么变量值会自动更改?

时间:2020-09-28 04:53:39

标签: c queue circular-queue

这是我的代码

    int front=-1, rear=-1, CQUEUE[MAX];
    int isFull()
    {
      if((rear=MAX-1 && front==0) || front==rear+1)
        return 1;
      else
        return 0;
    }
    void enQueue()
    {
      printf("\nValue of rear=%d front=%d",rear,front);
      char ch;
      if(!isFull())
      {
        printf("\nValue of rear=%d front=%d",rear,front);
      ......

这是调用函数enQueue()的输出

Value of rear=-1 front=-1
Value of rear=0 front=-1

rear的值增加了1,尽管我没有手动增加它。

2 个答案:

答案 0 :(得分:1)

看看您的第一个if语句。

if (rear=MAX-1  ...)
// maybe better if you type:
if (rear==MAX-1 ...)

答案 1 :(得分:1)

您正在使用赋值运算符=,在==中应该使用eq比较运算符isFull

int isFull()
{
  if((rear==MAX-1 && front==0) || front==rear+1)
    return 1;
  else
    return 0;
}