#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/