c ++中的!=
和=!
操作之间有什么区别?
我尝试谷歌搜索答案,但似乎搜索引擎不接受一些文本,如!=
或=!
我也知道差异的逻辑是什么,但我想不出一个实际的例子。我的意思是让我说我有2个参数A和B在什么条件下A =!B将是真的但A!= B将是假的
if(A!=B) return true;
if(A=!B) return false;
我真的找不到任何搜索引擎的答案,而且似乎没有在任何文档中提及。
答案 0 :(得分:5)
此操作:
A!=B
确定A
是否不等于B
。如果它们不相等,则评估为true
。如果它们相等,则评估为false
。它只是一个布尔比较操作。
此操作:
A=!B
不是布尔比较。 将<{1}}的值设置为A
的否定值。 (在此上下文中使用时,它也评估到B
的新值,但在这方面并不是真正的“比较”。)所以如果A
是{ {1}}然后,将B
的值设置为true
。可以更清楚地看到:
A
第一个操作只是比较,它不会修改任何内容。第二个操作修改 false
。
答案 1 :(得分:2)
A!=B
表示“A
不等于B
”。A=!B
表示“将B
的补码分配给A
,并产生A
的左值”。它可以(应该)重写为A = !B
或A = (!B)
。