我可以在循环中分配和评估表达式吗?

时间:2014-06-08 17:41:41

标签: c while-loop expression variable-assignment

我的意思是这样的:

while(lu = read(d1, buf, sizeof(buf)), lu > 0 )

它的语法很好吗?

2 个答案:

答案 0 :(得分:2)

它的语法很好,但语义很差。

换句话说,该代码不会按照您的想法执行,这会使其有点危险。

由于作业(=)的优先级低于比较(>),因此不会以您需要的方式进行评估。

要修复它,请添加括号:

while((lu = read(d1, buf, sizeof buf)) > 0)

另外,请记住sizeof不是函数。

答案 1 :(得分:1)

我建议:

while((lu = read(d1, buf, sizeof(buf))) > 0 )