所以我有一个返回“结果:真”的程序
if (true == false != true) {
cout << "result: true";
}
else {
cout << "result: false";
}即使我们在if语句中翻转比较运算符,编译器仍然计算表达式为true。
if (true != false == true)我的问题是:
发布于 2021-09-08 05:13:46
你们两个问题的答案都是运算符优先。==和!=运算符具有相同的优先级,这意味着它们将按照给定的顺序进行计算。
因此,在true == false != true中,被计算为(true == false) != true第一语句true==false为false,完整的语句现在变成false!=true,计算结果为true。
类似地,第二个语句true != false == true变成(true != false) == true,在结尾处计算为true。
编辑
在看完@Pete的评论后,我又读了一些。显然,与这类情况相关的是结合性性质。
来自优先
具有相同优先级的运算符按其结合性的方向绑定到它们的参数。例如,表达式a=b=c被解析为a= (b = c),而不是(a = b) =c,因为赋值的右向左结合,但是a+b-c被解析为(a + b) -c,而不是a+ (b - c),因为加法和减法的左向右结合性。
发布于 2021-09-08 05:19:00
https://stackoverflow.com/questions/69097245
复制相似问题