我正在循环i,j,k和n。除了k == j
和n == k
之外,我想要执行一条语句。
如果我使用这样的代码:
if (k != j && n != i)
//statement
该声明不会在两种情况下执行:
所以我使用了这样的代码:
if (k == j && n == i)
;else
//statement
通过此代码,语句将成功执行,但k == j && n == i
。
以分号结尾的if语句是否是用C ++编写代码的好方法?
答案 0 :(得分:7)
不,它不是一种好的编码方式。通常的方法是使用!
来反转逻辑:
if(!(k==j && n==i))
//statement
或者您可以使用De Morgan's Law来反转逻辑:
if(k!=j || n!=i)
//statement
答案 1 :(得分:5)
你的问题是你错误地否定了这种情况。你应该这样做:
if (!(k==j && n==i))
// statement
或者,根据德摩根的法律:
if (k != j || n != i)
// statement
答案 2 :(得分:1)
...是一种很好的编码方式吗?
没有
你应该写
if (!(k == j && n == 1))
{
//statement
}
在if
,for
或while
之后添加分号几乎总是错误的。这是非常意外的,使得阅读代码非常困难。