2013-10-02 94 views
2
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; 如何以不同的方式写它?阵列非左值在分配

+2

也许你可以告诉我们你期望的代码做什么 – pNre

+0

你可能想阅读[运算符优先顺序](http://en.cppreference.com/w/c/language/operator_precedence)。 –

+0

谁投了现在删除的答案似乎做得不恰当。从OP的评论“如何接线R = 5和c = 10”,在源代码提示用户是按1为一个5×10阵列的文本,它出现在删除的答案,得到所需的信息(使用' {r = 5; c = 10;}')。我已投票拒绝他们。 –

回答

6
r=5&&c=10; 

装置r = (5&&c) = 10其是0 = 101 = 10

说明: 这样做的原因是&&运算符的优先级比的因此=5c被结合到操作者&&第一较高。之后结合这种表达看起来像

r=(5&&c)=10; 

这相当于要么

r= 0 =10; 

r= 1 =10; 

这两种表达方式背后的原因是,5 && c将返回truefalse取决于值为c(无论是否为0)。
按照注释通过OP

如何把R = 5和c = 10

你可以这样做,因为

if (choice==1) 
{ 
    r = 5; 
    c = 10; 
} 
+0

谢谢。如何把R = 5和c = 10 –

+0

@EinārsOzols你想为你做的可以在你的问题你的目标是什么解释为什么要做? –

+0

@ShafikYaghmour;更新了我的答案。 – haccks

1
if (choice==1) 
{ 
    r = 5; 
    c = 10; 
} 

除了轻微的变化空白的分布,这是如果你不试图混淆它的唯一方法。

+0

那么,它是*不*的唯一方式:'如果(选择== 1) R = 5, C = 10;' – wildplasser