关于&&和<<的执行顺序
查看原帖
关于&&和<<的执行顺序
632619
DrPhilips楼主2023/11/14 12:04

写一道红题水一点经验,但是却WA了两个点 看一下好像没有什么问题

#include <iostream>
using namespace std;

int l1, l2, l3;
int main(){
    cin >> l1 >> l2 >> l3;
    cout << (l1+l2 > l3) && (l2+l3 > l1) && (l1+l3 > l2);
}

但C++中,流运算符<<的优先级要比逻辑与&&的优先级高,所以,上面的代码执行流程其实是这样子

#include <iostream>
using namespace std;

int l1, l2, l3;
int main(){
    cin >> l1 >> l2 >> l3;
    (cout << (l1+l2 > l3)) && (l2+l3 > l1) && (l1+l3 > l2);
    cout << 1 && 0 && 0;//输出1,等价于下方代码
    (cout << 1) && 0 && 0;//输出1
}

所以加上括号就AC啦

#include <iostream>
using namespace std;

int l1, l2, l3;
int main(){
    cin >> l1 >> l2 >> l3;
    cout << ((l1+l2 > l3) && (l2+l3 > l1) && (l1+l3 > l2));
}
2023/11/14 12:04
加载中...