【发布时间】:2014-03-01 20:19:51
【问题描述】:
我正在循环 i、j、k 和 n。我想要执行一个语句,除非k == j 和n == k 时。
如果我使用这样的代码:
if (k != j && n != i)
//statement
语句在两种情况下不会执行:
- 当 k != j 当 n == j 时。
- 当 k == j 当 n != j 时。 (这不是我需要的)
所以我使用了这样的代码:
if (k == j && n == i)
;else
//statement
通过这段代码,语句将成功执行,除非k == j && n == i。
以分号结尾的 if 语句是用 C++ 编码的好方法吗?
【问题讨论】:
-
为什么不直接否定条件呢?如果看起来不愉快,也许 DeMorganized 版本会有所帮助。
-
if (!(k==j && n==i))我认为应该做同样的事情,但我不太了解 c\c++,所以不要坚持。 -
这是一种糟糕的编码方式。
-
如果你真的想要这样做(例如,因为
if (a); else if (b) {...} else if (c) {...} else {...}之类的东西),你不妨用空括号替换第一个分号,这样编译器就不会抱怨,或将分号移到新行(至少 Clang 喜欢这样)。 -
@owleye,是的,确实没有理由(在正常情况下)有一个空的 if 和 else。
标签: c++ coding-style