我写了这个程序:
#include <iostream>
using namespace std;
void unequalityOperator(){
cout << "Running unequalityOperator..." << endl;
bool a = true, b = false;
if ( a != b ) cout << "!=" << endl;
if ( a =! b ) cout << "=!" << endl;
}
int main()
{
unequalityOperator();
system("pause");
return 0;
}
我很惊讶它运行并打印了两个字符串。所以我和其他一些二元运算符(例如<=
,>=
等)尝试过同样的事情,但它没有用。
因此,我想了解!=
和=!
之间是否存在差异。
我知道有一些运算符,例如+=
,-=
等,其工作方式不同,例如,+=
和=+
之间的区别在于添加将在(实际上)命令之前或之后发生。由于这个原因,我怀疑在这些运算符的实现中存在差异,但我不确定是什么。
所以请帮助我理解。
答案 0 :(得分:3)
表达式a = !b
是将值!b
赋值给变量a
。
if
语句中对此表达式的评估是a
的新值。
由于b
设置为false
而您将!b
分配到a
,因此该值为true
。
答案 1 :(得分:1)
在第一种情况下,!=
运算符是单个不等运算符。在第二种情况下,它是赋值运算符=
,逻辑非运算符!
。因此,在第二种情况下,您要将not b
分配给a
并返回结果true
答案 2 :(得分:0)
这可能有助于澄清事情:
!=
:不等于运算符=!
:这些实际上是两个运算符:赋值运算符和一元逻辑NOT运算符+=
:sum-assignment operator =+
:这些实际上是两个运算符:赋值运算符和一元+运算符-=
:差异分配运算符=-
:这些实际上是两个运算符:赋值运算符和一元运算符此外,正如您在编辑之前的问题一样:
++=
:两个运算符:postfix increment operator和assignment operator =++
:两个运算符:赋值运算符和前缀增量运算符我希望你注意到这种模式。
供参考: