C 赋值中的数组非左值

C 赋值中的数组非左值,c,arrays,C,Arrays,错误在r=5&&c=10行; 如何以不同的方式书写 int masivs[row][col],i,j,n,choice,r,c; system("cls"); srand(time(NULL)); printf("Darba autors Einars Ozols\n"); printf("Sakummasive aizpilde \n"); printf("Kadu masivu izveidot?\n Ja 5*10 spied 1 \n Ja 4*11 spied 2"); scanf(

错误在r=5&&c=10行; 如何以不同的方式书写

int masivs[row][col],i,j,n,choice,r,c;

system("cls");
srand(time(NULL));
printf("Darba autors Einars Ozols\n");
printf("Sakummasive aizpilde \n");
printf("Kadu masivu izveidot?\n Ja 5*10 spied 1 \n Ja 4*11 spied 2");
scanf("%d", &choice);
if (choice==1)
r=5&&c=10;
表示
r=(5&&c)=10
,即
0=10
1=10

说明: 原因是
&
运算符的优先级高于
=
运算符的优先级,因此
5
c
首先绑定到
&
运算符。绑定后,此表达式如下所示

r=5&&c=10;  
这相当于

r=(5&&c)=10;   

这两个表达式背后的原因是
5&&c
将返回
true
false
,具体取决于
c
的值(无论它是否为
0

根据OP的评论

如何连接r=5和c=10

你可以这样做

r= 1 =10;  

除了空格分布的细微变化外,如果您不想混淆它,这是唯一的编写方法。

也许您可以告诉我们您希望代码做什么您可能想阅读的内容。投票否决现在删除的答案的人似乎这样做不适当。从OP的注释“如何连接r=5和c=10”以及源代码中建议用户按1键获取5*10数组的文本来看,删除的答案似乎提供了所需的信息(使用
{r=5;c=10;}
)。我已经投票取消删除它们。我想你可能会被“和”这个词挂掉
&&
是逻辑“and”运算符,其数学含义超出了通常的英语含义:如果两个操作数都产生真值,则产生真值,否则产生假值。(如果左操作数为false,它也不会对右操作数求值。)我认为您要寻找的只是求值
r=5
,然后求值
c=10
。要做到这一点,最好的方法就是简单地使用括在大括号中的两条语句。谢谢。如何连接r=5和c=10@EinārsOzols你为什么要这样做?你能在你的问题中解释你的目标是什么吗?@ShafikYaghmour;更新了我的答案。这不是唯一的方法:
if(choice==1)r=5,c=10
r= 1 =10;  
if (choice==1)
{
    r = 5;
    c = 10;
}   
if (choice==1)
{
    r = 5;
    c = 10;
}