C中赋值表达式的结果是什么?

时间:2013-05-15 14:21:16

标签: c expression assignment-operator

在以下代码中:

int c;
while((c=10)>0)

c = 10评估的内容是什么?是1表示值10成功分配给变量c,还是10?为什么呢?

5 个答案:

答案 0 :(得分:13)

c = 10是一个返回10的表达式,它也将10分配给c。

答案 1 :(得分:1)

分配返回指定的值。在c=10为10的情况下。由于10!= 0,在c中它也表示也是如此,因此这是一个无限循环。

就像你会写

while(10)

另外,你已完成作业。

如果你遵循这个逻辑,你可以看到,

while(c=0)

将是一个永远不会执行其语句或块的循环。

答案 2 :(得分:1)

这是一个无限循环。首先将10分配给c,然后将其与c>进行比较。 0,然后再次循环开始,将10分配给c,将其与c> 0进行比较,依此类推。循环永不结束。这相当于以下内容:

while(c=10);

/* Because c assign a garbage value, but not true for all cases maybe it assign 0 */
while(c); 

编辑:它不会返回10因为编译器只返回true或false值,所以它返回true或1而不是10。

答案 3 :(得分:1)

while((c=10)>0)

c = 10 should返回10

现在,对于while(10>0) 10>0>运算符返回1(非零值)。

答案 4 :(得分:1)

在C99 6.5.16中说。

An assignment operator stores a value in the object designated by the left operand. An        
assignment expression has the value of the left operand after the assignment, but is not an 
lvalue.