C 程序 - 需要左值作为赋值的左操作数 -

标签 c lvalue

#include <stdio.h>
#include <stdlib.h>

int main()
{
int N,i ,j ,m ;
int T[i][j] ;
do{
    printf("Saisir N");
    scanf("%d", &N);
    i=N ; j=N;
}while(N>10 && N<0);
for(m=1;m<(N/2);m++){

    for(i=1;i<N;i++){

          for(j=1;j<N;j++){
                if ( i=(m-1) && j=(N-m+1)){ // i get the error in this line
                    T[i][j]=m;
                }
                if ( i=(m-1) && j=(m-1) ){  // i get the error in this line
                    T[i][j]=m;
                }
                if ( i=(N-m+1) && j=(N-m+1) ){ // i get the error in this line
                    T[i][j]=m;
                }
                if (i=(N-m+1) && j=(m-1)){ // i get the error in this line
                    T[i][j]=m;
                }
          }

    }
}
}    

我在“if 条件”行中收到此错误“需要左值作为赋值的左操作数”,我不知道问题出在哪里。谢谢您

最佳答案

if ( i=(m-1) && j=(N-m+1))

&& 的优先级高于 = 原因

(m-1) && j

首先要进行评估,所以这就变成了

if ( i=((m-1) && j)=(N-m+1))

"="具有从右到左的关联性,因此下一个操作将是

((m-1) && j)=(N-m+1)

左侧是不可修改的左值(因为中间步骤没有为其分配存储空间),导致左侧错误需要左值。

可能就是你想要的

if ( i==(m-1) && j==(N-m+1))

关于C 程序 - 需要左值作为赋值的左操作数 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47371338/

相关文章:

c++ - 如何在给定函数之外获取与 C 闭包关联的(向上)值?

c - 在用户输入后使用快速排序对单链表进行排序,然后插入新节点和排序列表

c - C 语言中二进制搜索函数的调试问题

c - 定义元素较少的数组

c - "lvalue required"在 C 编译器错误中意味着什么?

c - 如何将头元素放在队列的后面?

c++ - 错误左值需要作为赋值 C++ 的左操作数

c++ - 前/后增量的左值和右值

c - `*a =` 和 `= *a` 有什么区别?

c++ - R 和 L 值是否与其上下文有关?