选择结构与运算符
选择结构
我们之前所学的所有东西,编写出来的程序结果都是固定的
现在我们试想我们需要编写一个程序,输入一个数字,让你判断这个数字是偶数还是奇数
此时对于不同的输入,我们的程序需要得到不同的结果,所以需要用到本文所介绍的语法:
选择语句
选择语句的语法大致是这样的:
if(一个bool值)
{
bool值为true时要执行的内容
}
else
{
bool值为false时要执行的内容
}
比如上述的判断一个数字的奇偶,我们可以这么写:
int x;
cin>>x;
if(x%2)
{
cout<<"奇数";
}
else
{
cout<<"偶数";
}
我们之前讲过,bool类型会把所有非0的数认为是\(true\),把0认为是\(false\)
又因为x%2即x的余数,所以当x%2为1的时候说明x整除2有余数,说明他是奇数
x%2得到0时,0会被认为\(false\),所以在else里面我们输出偶数
此外,else语句不是必须加的,如果bool值为\(false\)时不进行任何操作可以只写if部分
运算符
在前面我们已经讲了算术运算符和赋值运算符,在这里,我们讲解得到的结果会是bool值的
关系运算符和逻辑运算符
关系运算符
1.>
即判断左边的操作数是否大于右边的操作数,如果左边的操作数大于右边的操作数,结果为\(true\),反之结果为\(false\)
例如
if(5>4)
{
cout<<"YES!";
}
会成功的输出YES,因为5大于4,结果为\(true\),会运行if里面的内容
如果代码为
if(4>5)
{
cout<<"YES!";
}
则这份代码不会有任何的输出,因为4不大于5,结果为\(false\),我们也没有写else部分,代码不会进行任何操作
2.<
与>号类似,即判断左边的操作数是否小于右边的操作数,如果左边的操作数小于右边的操作数,结果为\(true\),反之结果为\(false\)
3.>=
即判断左边的操作数是否大于等于右边的操作数,如果左边的操作数大于等于右边的操作数,结果为\(true\),反之结果为\(false\)
4.<=
与>=号类似,即判断左边的操作数是否小于等于右边的操作数,如果左边的操作数小于等于右边的操作数,结果为\(true\),反之结果为\(false\)
5.==
即判断左边的操作数是否等于右边的操作数,如果左边的操作数等于右边的操作数,结果为\(true\),反之结果为\(false\)
6.!=
即判断左边的数是否不等于右边的操作数,如果左边的操作数不等于右边的操作数,结果为\(true\),反之结果为\(false\)
一个小坑
最后,有个值得注意的点,由于关系运算符得到的结果会是一个bool值,所以我们如果将关系运算符连写可能并不能得到我们想要的结果
例如:
int x;
cin>>x;
if(2<x<7)
{
cout<<"YES!";
}
对于上述代码,我们会发现不管我们x为多少都会输出YES!,而不是只有x在2和7之间时输出,为什么呢?
因为刚开始我们会判断2<x,得到一个bool值,如果x大于2就是1,x小于等于2就是0
但不管得到什么,1或者0,小于7肯定恒成立,所以最后总会输出YES
逻辑运算符
1.&&
逻辑运算符的两边的操作数都是bool类型的,&&我们一般称呼为与
意思是当左右两个操作数的值都为\(true\)是得到\(true\),其余任何情况都得到\(false\)
例如上文我们想让输入的数在2到7之间输出YES就可以用与,例如:
int x;
cin>>x;
if(x>2 && x<7)
{
cout<<"YES!";
}
此时&&保证了只有两边都成立的时候才会返回\(true\),就达到了我们的本意
2.||
||运算我们一般称为或
意思是当左右两个操作数有一个是\(true\)就得到\(true\),只有左右都是\(false\)的情况才会返回\(false\)
3.!
!运算我们一般称呼为非
!运算不同于上面两个,只涉及到一个bool类型的操作数,即当操作数为\(true\)时得到\(false\),操作数为\(false\)时得到\(true\)
运算符的优先级
最后,我们整理一下目前为止所讲到的所有运算符的优先顺序:
算术运算符>关系运算符>逻辑运算符>赋值运算符
并且,在算术运算符中:
*/%>+-
在逻辑运算符中:
!>&&>||

浙公网安备 33010602011771号