Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么变量值会自动更改?_C_Queue_Circular Queue - Fatal编程技术网

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

C 为什么变量值会自动更改?,c,queue,circular-queue,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 fron

这是我的密码

    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()时的输出


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

看看您的第一条if语句

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

看看你的第一个if语句

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

您正在使用赋值运算符
=
,在
isFull

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

您正在使用赋值运算符
=
,在
isFull

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

rear=MAX-1
->
rear==MAX-1
它几乎总是指向一个实例,在该实例中,您正在写入超出您声明的某个数组末尾的内容,或者,向堆栈变量写入的数据量超过了它所能容纳的数据量,这会导致额外的字节覆盖其他变量存储空间,从而产生一种幻觉,认为某个变量发生了神奇的变化——它没有,您只是调用了未定义的行为并看到了结果。。。(或者在本例中,您弄乱了一个应该是
=
=
)。启用编译器警告会为您指出这一点。
rear=MAX-1
->
rear==MAX-1
,它几乎总是指向一个实例,在该实例中,您正在写入超出您声明的某个数组末尾的内容,或者,向堆栈变量写入的数据量超过了它所能容纳的数据量,这会导致额外的字节覆盖其他变量存储空间,从而产生一种幻觉,认为某个变量发生了神奇的变化——它没有,您只是调用了未定义的行为并看到了结果。。。(或者在本例中,您弄乱了一个应该是
=
=
)。启用编译器警告会为您指出这一点。