【问题标题】:Value return Variations in C [closed]C中的值返回变化[关闭]
【发布时间】:2020-09-12 16:15:57
【问题描述】:

谁能帮我理解为什么有人会使用return str[0] == 0 || true; 而不是true

【问题讨论】:

  • 客气地说:我想不出一个很好的理由来做那种返回句,如果这个结构来自你的导师,或者你正在使用的书/网页,我会坚决考虑停止使用它们。
  • 它来自 Codewars 的一位导师。我告诉他我因为使用​​它而被禁止使用 stackover flow。我正在等待他的回应。不知道为什么我被禁止了。 :(
  • 您因使用 Stack Overflow 被禁止使用?这听起来不太可能......
  • 您的问题与我几年前写的另一个问题有些相似...stackoverflow.com/q/20930483/3011009
  • @AndrewB 给版主发电子邮件或在 meta.stackoverflow.com 上发帖

标签: c return boolean


【解决方案1】:

没有很好的解释。

如果|| 左边的表达式有副作用——例如,如果它是一个函数调用——那么可能是有原因的。它仍然是糟糕的风格,但至少它不会没用。

比如这里的函数调用不能随便删除:

return write(foo) || true;

但最好写成:

write(foo);
return true;

但由于str[0] == 0 没有任何副作用,它充其量是无用的,最坏的情况是有害的。如果str[0] 是无效的指针取消引用,它除了可能崩溃之外什么都不做。

如果您将左侧移动到它自己的语句中应用相同的转换......

str[0] == 0;  // useless
return true;

...你可以看到第一行是空操作,应该被删除。

【讨论】:

  • 是的,我对糟糕的风格一点也不感兴趣。所以现在我知道它是不好的风格,它作为有用的代码从我的脑海中被抛弃了。我很快就知道代码可以执行并遵循 ISO 的规则,但仍然是可怕的代码。感谢您的回复和帮助约翰,以及所有其他努力提供帮助的人。干杯:)
猜你喜欢
  • 1970-01-01
  • 2016-12-22
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多