while语法错误,求解答?

include <stdio.h>

int main (){

int i,n[10],x,t;
    printf("\n");
for(i=0;i<=9;i++){
    scanf("%d", &n[i]);
}
while (1) {
printf("x is: ");
scanf("%d",&x);
printf("t is: ");
scanf("%d",&t);
if (x = 0 && t = 0){
    break;
}
    for(i=0;i<10;i++){
    if(n[i]>=x && n[i]<=t){
        printf("%d\n",n[i]);
    }
}
}
return 0;
}

图片描述

回复
阅读 3.1k
5 个回答

if 里面应该是判断而不是赋值,应该用两个等于 == 而不是赋值符号 =

第 13 行

if (x == 0 && t == 0) {
    // ...
}
新手上路,请多包涵

if (x == 0 && t == 0)

第十三行if (x = 0 && t = 0)这句话语法有问题,应该为if (x == 0 && t == 0)
如果你这样写(if (x = 0 && t = 0)),这个条件判断永远都不可能成立
左边x = 0 进行赋值语句恒等于0,右边同理,你这个与不可能成立。
这些都是C语言语法基础

if (x = 0 && t = 0) /*&&优先级高于=,⇒ if (x = (0 && t) = 0) ⇒ if(x = (0 = 0))*/

以上就是报"error:lvalue required as left operand of assignment(左操作数的赋值要求一个左值)"的原因。
建议:

if (0 == x && 0 == t)
推荐问题
宣传栏