在一段代码中,我看到了以下短语:
!(word[i]==(tmpP->word[i]))
它等于吗
(word[i] != (tmpP->word[i]))
这两种表达方式有什么区别?
表达式
!(word[i]==(tmpP->word[i]))
在逻辑上等同于表达式
(word[i] != (tmpP->word[i]))
的另一个例子
!( a == b && c == d )
相当于
!( a == b ) || !( c == d )
也就是说,反过来,相当于
a != b || c != d
这两个表达式之间有什么区别?
可以交替使用a != b
或!(a == b)
1。两者都使用a, b
一次,并且都计算为值为0或1的int
。
使用对代码上下文最清楚的一个(通常是第一个,但第二个绑定更紧密。(
我们如何写";不相等";在c?
标准C在<iso646.h>
(自C94以来(中有替换拼写宏,包括not_eq
。
and &&
and_eq &=
bitand &
bitor |
compl ~
not !
not_eq !=
or ||
or_eq |=
xor ^
xor_eq ^=
示例
#include <iso646.h>
#include <stdio.h>
#include <time.h>
int main() {
srand((unsigned)time(0));
int a = rand()%2;
int b = rand()%2;
if (a not_eq b) puts("Not equal.n");
else puts("Equal.n");
}
小心使用<iso646.h>
,因为宏可能与现有代码名称冲突。
1!
的优先级高于!=
,因此对于更复杂的表达式,请小心。当有疑问时,使用外部()
:(a != b)
与(!(a == b))
确实相同。