我正在循环i,j,k和n.我希望执行一个语句,除非k == j和n == k.
如果我使用这样的代码:
if (k != j && n != i)
//statement
Run Code Online (Sandbox Code Playgroud)
该声明不会在两种情况下执行:
所以我使用了这样的代码:
if (k == j && n == i)
;else
//statement
Run Code Online (Sandbox Code Playgroud)
通过此代码,语句将成功执行,除非k == j && n == i.
以分号结尾的if语句是否是用C++编码的好方法?
不,这不是一种好的编码方式.通常的方法是使用!反转逻辑:
if(!(k==j && n==i))
//statement
Run Code Online (Sandbox Code Playgroud)
或者您可以使用De Morgan定律来反转逻辑:
if(k!=j || n!=i)
//statement
Run Code Online (Sandbox Code Playgroud)
你的问题是你错误地否定了这个条件.你应该这样做:
if (!(k==j && n==i))
// statement
Run Code Online (Sandbox Code Playgroud)
或者,根据德摩根的法律:
if (k != j || n != i)
// statement
Run Code Online (Sandbox Code Playgroud)