目录
if else 所用到的关系运算符
关系运算符
关系运算符 | 所判断的内容 |
== | 是否相同 |
!= | 是否不同 |
> | 是否大于 |
< | 是否小于 |
>= | 是否大于等于 |
<= | 是否小于等于 |
例如当左边的值为-1,右边的值为1时,从上到下一次判断为伪,真,伪,真,伪,真。
if else条件判断
if else是C++中最基本的条件判断语句,即当判断条件为真时执行一段语句,反之则执行另一端语句。
单独的 if 语句
#include<iostream>
using namespace std;
int main(){
int s;
cin>>s;
if(s==0){
cout<<"s=0";
}
return 0;
}
这是一段单独 if 语句的程序,用户先输入一个数,若这个数为0,则输出“s=0”。if 后小括号里的内容是需要判断的条件,这里s==0就是“如果s的值为0”。
运行结果:
示例1
0
s=0
示例2
12
可以看出当输入0时,程序执行了大括号里的命令;如果我们输入的不是0,就会直接return 0。表达式s==0也有自己的值,条件判断为真时就为1,条件判断为伪时为0。也就是说,if 的原理就是当小括号里为1时执行大括号里的语句。所以,刚才的代码等价于:
#include<iostream>
using namespace std;
int main(){
int s;
cin>>s;
k=s==0;
if(k){ //if(k==1)也可以
cout<<"s=0";
}
return 0;
}
if else 语句
单独 if 语句可以在条件成立时执行命令,但大部分情况下,我们需要的不仅仅时“如果”,而是“如果 否则”。if(x){a} 是当 x(成立)时执行 a,if(x){a}else{b} 是当 x(成立)时执行 a,否则执行 b。
#include<iostream>
using namespace std;
int main(){
long a=0;
cin>>a;
if(a==0){
cout<<"a=0";
}
else{
cout<<"a not=0";
}
return 0;
}
代码第6行判断a是否为0,为0时执行 if 大括号里的语句,否则执行 else 大括号里的语句。
运行结果:
示例1
0
a=0
示例2
1
a not=0
if (else) 语句的简化
1.省略大括号
当要执行的语句只有一条时,可以省略大括号。例:
#include<stdio.h>
int main(){
int m;
scanf("%d",&m);
if(m>1) printf("m>1");
else printf("m<1 or m=1");
return 0;
}
2.更加简略的写法
这种写法和 if else 的逻辑相同,而且更加简便。
格式:x?a:b
x就是判断条件,a就是if语句,b就是else语句。
这种写法一般不用于执行if语句和else语句较长的情况。可以认为这整个语句是在x为真时等价于a,x为伪时等价于b。
#include<iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<a<b?a:b; //取a,b中较小值
return 0;
}
(看着还挺舒服)
if 中的 与,或,非
如果我们想要让两个条件都成立时才执行命令,可以这样做:
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
if(a>=0) if(a<=6) cout<<"0<=a<=6";
return 0;
}
不过在只使用一个 if 的前提下也可以达到一样的效果 。这时就需要用到逻辑运算符。
逻辑运算符
逻辑运算符 | 所判断的内容 |
&& | 是否两个条件都成立 |
|| | 两个条件是否至少有一个成立 |
! | 这个条件是否不成立 |
所以代码可以写成:
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
if(a>=0&&a<=6) cout<<"0<=a<=6"; //a大于等于0且a小于等于6
return 0;
}
或的示例
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
if(a<=0||a>=6) cout<<"a<=0 or a>=6"; //a小于等于0或a大于等于6
return 0;
}
非的示例
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
if(a!=0) cout<<"a is not zero.\n"; //a不等于0
return 0;
}
切记:在代码中没有像 0<a<6 这样的条件判断!
if else if else (嵌套结构)
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
if(a>0){
cout<<"a为正数";
}
else{
if(a==0){
cout<<"a为0";
}
else{
cout<<"a为负数";
}
}
return 0;
}
这也就是 if 里面还有 if ,逻辑大家应该都清楚。可以简化一下
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
if(a>0) cout<<"a为正数";
else if(a==0) cout<<"a为0";
else cout<<"a为负数";
return 0;
}
switch条件判断
基本语法
if else 语句嵌套多了就会感到很烦,这个时候我们就可以用switch语句。
#include<iostream>
int main(){
cout<<"Input 1 or 2 or 3.\n";
int k;
cin>>k;
switch(k){
case 1:cout<<1;break; //如果k==1
case 2:cout<<2;break; //如果k==2
case 3:cout<<3;break; //如果k==3
default:cout<<"not 1 or 2 or 3!"; //如果k不是1,2,3
}
cout<<endl;
return 0;
}
//switch 关键词 break
switch可以依次让括号中的变量和下面的case比较,但switch有一个缺点,只能比较整形。在比较的过程中,发现一个与变量值匹配的case就执行对应的语句,若遇到关键词break,就跳出整个switch语句。
若没有对应的值,就执行default中的代码。
结果示例:
1
1
break
当case中出现break时,会直接跳出整个switch语句。但当case执行完却仍然没有break,就会一直执行直到出现break,如果整个switch中都没有break,那么将会从匹配的case开始,一直执行到default。
#include<iostream>
int main(){
cout<<"Input 1 or 2 or 3.\n";
int k;
cin>>k;
switch(k){
case 1:cout<<1; //如果k==1
case 2:cout<<2; //如果k==2
case 3:cout<<3; //如果k==3
default:cout<<"not 1 or 2 or 3!";
}
cout<<endl;
return 0;
}
//switch 关键词 break
结果示例:
1
123not 1 or 2 or 3!
#include<iostream>
int main(){
cout<<"Input 1 or 2 or 3.\n";
int k;
cin>>k;
switch(k){
case 1:cout<<1; //如果k==1
case 2:cout<<2; //如果k==2
case 3:cout<<3;break; //如果k==3
default:cout<<"not 1 or 2 or 3!";
}
cout<<endl;
return 0;
}
//switch 关键词 break
结果示例:
1
123
本帖用到的其他函数
cout,cin,printf,scanf
可以详见我之前的文章: