#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 conditions”的行中得到了这个错误“左值作为赋值的左值”,我不知道问题出在哪里。谢谢
if ( i=(m-1) && j=(N-m+1))
&& than = cause的优先级更高
(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))
你得到错误的原因是因为if (i = something)
没有做你认为它做的事情。你需要关系运算符==
来检查是否相等。不是=
。
因此,在if语句的条件下,将=
s更改为==
s。