在以下代码中:
int c;
while((c=10)>0)
是什么 c = 10
评价到?是1表示值10成功分配给变量c,还是10?为什么?
在以下代码中:
int c;
while((c=10)>0)
是什么 c = 10
评价到?是1表示值10成功分配给变量c,还是10?为什么?
c = 10是表达式返回10,其也将10分配给c。
c = 10是表达式返回10,其也将10分配给c。
赋值返回指定的值。以防万一 c=10
因为10!= 0,所以在c中它也意味着是,所以这是一个无限循环。
就像你会写的那样
while(10)
加上你完成了作业。
如果你遵循这个逻辑,你可以看到,那
while(c=0)
将是一个永远不会执行其语句或块的循环。
这是一个无限循环。首先将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。
在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.