用来比较两个数值大小关系的运算,运算的结果是一个布林值,当两者的大小关系成立时结果为 true,不成立则为 false
==
: 比较两者是否相等!=
: 比较两者是否不相等>
: 左边是否大於右边<
: 左边是否小於右边>=
: 左边是否大於等於右边<=
: 左边是否小於等於右边因为 true 实际上是 1, false 是 0,所以可以用以下方法在C语言中确认比较运算的结果
#include<stdio.h>
#include<stdlib.h>
int main(){
int a=10, b=1;
printf("%d\n", a==b);
printf("%d\n", a!=b);
printf("%d\n", a>b);
printf("%d\n", a>=b);
printf("%d\n", a<=b);
printf("%d\n", a<b);
return 0;
}
若显示 0 则代表两者关系不成立,1 就是关系成立
运算元和运算结果都是布林值的运算,可以用来表示复杂的条件
C语言中的逻辑运算子有:
!
: 否定(NOT),会将 true 变成 false,false 变成 true!true
等於 false, !false
等於 true&&
: 而且(AND),只左右两边都是 true 时为 true,其他情况都是 false||
: 或者(OR),当左右的其中一个是 true 时为 true,只有两边都是 false 时是 falsea | b | a||b |
a&&b |
---|---|---|---|
true | true | true | true |
true | false | true | false |
false | true | true | false |
false | false | false | false |
表示 如果...,就执行...
语法如下
if(<条件>){
<条件成立时执行的内容>
⋮
<条件成立时执行的内容>
}
这里的<条件>
是通常是一个布林值,所以常常会和前面的比较运算一起使用
当<条件>
成立(值为 true)时,会执行区块(大括号)中的程序码,若<条件>
不成立则会跳过这个区块,继续执行大括号後的程序码
下面的范例中的第9、10行只有在输入的数大於100时才会被执行,如果 x
小於等於 100 的话会被跳过
所以无论如何,大括号外的程序码(第12行开始)一定会被执行到
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
if(x>100){
x=x*2;
printf("%d\n", x);
}
printf("End\n");
return 0;
}
可以用多个 if()
判断多个不同的条件
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
if(x>100){
printf("x is greater than 100!\n");
}
if(x<1000){
printf("x is less than 1000!\n");
}
if(x==0){
printf("x is equal to 0!\n");
}
return 0;
}
if()
只能控制条件成立时执行的程序码,如果要在条件不成立时执行另一段程序码,可以用另一个 if()
,搭配相反的条件
下面的范例,如果 x
大於 100 就显示 x is greater than 100!,否则会显示 x isn't greater than 100!
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
if(x>100){
printf("x is greater than 100!\n");
}
if(x<=100){
printf("x isn't greater than 100!\n");
}
return 0;
}
用逻辑运算子!
可以达到一样的效果
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
if(x>100){
printf("x is greater than 100!\n");
}
if(!(x>100)){
printf("x isn't greater than 100!\n");
}
return 0;
}
除了用另一个 if()
和相反的条件,可以用 else
设定条件不成立时执行的程序码,语法是
else{
<条件不成立时执行的内容>
⋮
<条件不成立时执行的内容>
}
else
必须写在 if()
的後面,所以 if-else
代表 如果怎样,就做...,否则做... 的概念
因为一个数不是偶数就是奇数,所以可以用 if-else
做判断
第8行 x%2
的结果可以用来判断一个数是奇数或偶数,因为 x%2
为0时代表 x
除以2余0(可以整除,是2的倍数),所以 x
是偶数
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
if(x%2==0){
printf("%d is a even number.", x);
}
else{
printf("%d is a odd number.", x);
}
return 0;
}
if-else
,只能产生两种结果,也就是条件成立和不成立这两种
如果要判断更多条件可以在 if()
和 else
间加入 else if()
,变成 if-else if-else
的结构,代表 如果...就...,否则如果...就...,以上皆不成立则...
如果要判断数字在哪个区间,就可以用 if-else if-else
#include<stdio.h>
#include<stdlib.h>
int main(){
int score;
scanf("%d", &score);
if(score>=60)
printf("PASS!!\n");
else if (score>=40)
printf("RETAKE!!\n");
else
printf("FAIL!!\n");
return 0;
}
一个 if
後面可以有多个 else if()
#include<stdio.h>
#include<stdlib.h>
int main(){
int score;
scanf("%d", &score);
if(score==100)
printf("EXCELLENT!!\n");
else if(score>=80)
printf("GREAT!!\n");
else if(score>=60)
printf("PASS!!\n");
else if (score>=40)
printf("RETAKE!!\n");
else
printf("FAIL!!\n");
return 0;
}
else if()
不一定要和 else
一起使用
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
if(x>=1000)
x=x-1000;
else if(x>=100)
x=x-100;
printf("%d\n", x);
return 0;
}
不管是 if-else
还是 if-else if
,只要有一个区块被执行了(有一个条件成立了),後面的条件判断都会被跳过
所以一个 if-else if
或 if-else
最多只会执行其中一个区块,且是依照顺序做判断,使用时要注意条件的顺序,如果顺序较前面的条件涵盖范围比顺序较後面的条件还广,可能会导致後面的内容不会被执行
如果把上面例子中的条件顺序反过来,执行的结果会变成只有 RETAKE!! 或 FAIL!! 两种
#include<stdio.h>
#include<stdlib.h>
int main(){
int score;
scanf("%d", &score);
if (score>=40)
printf("RETAKE!!\n");
else if(score>=60)
printf("PASS!!\n");
else if(score>=80)
printf("GRATE!!\n");
else if(score==100)
printf("EXCELLENT!!\n");
else
printf("FAIL!!\n");
return 0;
}
因为只会执行其中一个区块,所以如果执行的指令互相独立(可能有多个区块被执行)时,就必须拆成多个 if()
下面的例子中,不管符合几个条件,第一段程序码最多只会执行一次 printf()
但第二段程序码只要条件符合就会执行,所以最多会执行两次 printf()
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
if(x>100)
printf("x is greater than 100.\n");
else if(x%2==0)
printf("x is a even number.\n");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
if(x>100)
printf("x is greater than 100.\n");
if(x%2==0)
printf("x is a even number.\n");
return 0;
}
如果区块中的程序码只有一行(大括号的内容只有一行)那大括号可以省略
所以上面判断奇、偶数的程序码可以改成:
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d", &x);
if(x%2==0)
printf("%d is a even number.");
else
printf("%d is a odd number.");
return 0;
}
挖坑清单:
main()
前面的 int
,和最後一行的 return 0;
\0
在字串、字元中的意思
受朋友的挑战,也是对自己的考验与面对自己。同时也是自己对自己的坦白,通过铁人赛来测试自己。 比起是比...
自从改变自己的工作模式後,现在平均的案量是每天有计时的工作时数大概是三个小时,并且同时有三位长期配合...
前言 今天要开始写 admin_bp,有蛮多部分跟之前很像。 /admin_dashboard/po...
Explore Azure service health Provide personalized ...
【心得】Notion笔记软件 自知自制力不好且记忆力有限(,,・ω・,,) 从以前我就有写手帐跟做笔...