知识积累
关系表达式与逻辑表达式
关系表达式
在C++中常常能见到被括号括起的式子,里面是两个数字或变量被一个符号连接起来,那样的式子一般是关系表达式,中间的符号是关系运算符。只要按照标准格式写,一整个括号和括号里的式子就相当于一个布尔值,若式子成立,则布尔值为1,若不成立,则布尔值为0,准确来说,就是在关系运算符两边放表达式,就会计算这两边的关系,返回1或者0;
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<(a>b)<<endl;
cout<<(a<=b)<<endl;
cout<<(a==b)<<endl;
cout<<(a!=b)<<endl;
/*
double m,n;
cout<<(fabs(a-b)<1e-6)<<endl;
//浮点数不能直接用==,因为有误差,不会完全相等,
只能说两者的差的绝对值很小,就看作二者相等了。
*/
在比大小问题里,特别需要注意的是,不可以在同一个表达式里同时出现多个大于号或小于号,比如 (a<=b<=c) ,这是不允许的,只能写成 (a<=b&&b<=c)。
在题目中,关系表达式有时候会很长,这样直接写在cout语句里就显得很麻烦,看起来也很繁琐,所以可以先将关系表达式的布尔值赋给一个整型变量,用 int、char 都可以,但习惯上会定义 bool 型的变量,因为占用字节少,只能表示0和1这两种取值;
#include<iostream>
using namespace std;
int main(){
int x;
bool p1,p2;
p1=x%2==0;//这里将表达式返回的布尔值直接赋给bool型变量p1,不需要加括号;
p2=x<12;
cout<<(p1&&p2)<<endl;//cout语句里的表达式就需要加括号;
return 0;
}
在一些刁钻的题目里,关系表达式十分复杂,里面包含了各种四则运算符号和关系运算符,但是计算机不是按字面顺序来处理表达式返回布尔值的,计算机的处理会按照特定的顺序进行,也就是遵照一定的优先级,下面表格里的运算符从左到右,优先级从高到低:
| ( ) | * 、 /、 % | + - | <、 >、 <=、 >= | ==、 != |
逻辑表达式
在C++中还可以使用一下几种逻辑运算符:
- 与运算符:&& 判断两个条件是否同时成立;
- 或运算符:|| 判断两个条件是否至少有一个成立;
- 异或运算符:^ 判断两个条件是否刚好一个成立、一个不成立;
- 非运算符:! 将一个条件取反,若条件返回值是1,则变成0,返回值是0同理;
在逻辑运算符中,非运算符!的优先级仅次于括号,与运算符&&的优先级高于或运算符||(没有括号掺和的情况下,先处理&&再处理||),或运算

最低0.47元/天 解锁文章
9016

被折叠的 条评论
为什么被折叠?



