【问题标题】:Can I allocate and evaluate an expression within loop while?我可以在循环中分配和评估表达式吗?
【发布时间】:2014-06-08 17:41:40
【问题描述】:

我的意思是这样的:

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

语法好吗?

【问题讨论】:

  • 询问你的编译器,如果是的话。问问你的同事,如果你想知道它是否是好的风格。我不认为是。

标签: c while-loop expression variable-assignment


【解决方案1】:

语法很好,但语义很差。

换句话说,该代码并没有按照您的想法执行,这使得它有点危险。

由于分配 (=) 的优先级低于比较 (>),因此它不会按照您需要的方式进行评估。

要修复它,请添加括号:

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

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

【讨论】:

    【解决方案2】:

    我建议:

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

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 2011-08-08
      • 2018-11-02
      • 2016-03-18
      • 2019-02-04
      • 2019-08-12
      • 2023-01-12
      • 1970-01-01
      • 2013-06-18
      相关资源
      最近更新 更多