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

问题描述

这是我的代码

    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",front);
      ......

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

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

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

解决方法

看看您的第一个if语句。

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...