Rob*_*ert 4 c logical-operators
有时我想做这样的事情(i和j是整数).
(if i==4 && j==9)
{
...
}
Run Code Online (Sandbox Code Playgroud)
如果i等于4且j等于9,它将通过括号.我一直使用单个&符号(&)而不是双和号,我的代码已经编译并运行.
它是否与双&符号&&做同样的事情,如果不是它做了什么?
编辑:哦,我一直在做同样的事情或者,使用'|' 而不是'||'
大概是你的意思if (i==4 && j==9).
在这种情况下,从改变这个&&到&不应该改变多少.这会改变最重要的事情是,随着&&中,j==9将只如果所评估的i==4部分是真实的,但是&,他们都会在不考虑评估.
当你有类似的东西if (x != NULL && x->whatever ...)你想要确保第二部分(解除引用x)只被评估,如果x不是空指针.但是,在你的情况下,比较似乎是ints的东西不太可能产生任何问题.
当你处理可能产生除1信号之外的其他值的东西时,也可能遇到问题true.同样,这不是问题,因为它==总是产生0或者1.如果(例如)您正在使用isalpha,islower等等,<ctype.h>则只需要生成0或非零值.如果你将它们与a组合在一起&,你会得到一个or可以为两个非零输入产生0 的位(例如1 & 2 == 0,但是1 && 2 == 1).
当您and对结果使用按位时==,您将获得0 & 0或0 & 1或1 & 0或1 & 1.1 & 1将屈服1(真实).所有其他人将产生0(假)---就像&&会有的那样.