在以下代码中:
int c;
while((c=10)>0)
c = 10
评估的内容是什么?是1表示值10成功分配给变量c,还是10?为什么呢?
答案 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)
答案 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.