一、邏輯型別和運算
#include <stdbool.h>
- 之後就可以使用bool和true、false
- ex1:
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool b = 6>5;
bool t = true;
printf("%d\n",t);
t = 2;
printf("%d\n",t);
printf("%d\n",b);
printf("%d\n",t);
return 0;
}
二、條件運算和逗號運算
1、條件運算子
- 條件運算子的優先順序高於賦值運算子,但是低於其他運算子
- count=(count>20)?count-10:count+10;
- count=(count>20):條件,條件滿足時執行問號後面的運算,條件不滿足時執行冒號後面的運算
*ex1:
#include <stdio.h>
#include <stdbool.h>
int main()
{
count=(count>20)?count-10:count+10;
//等價
if(count > 20)
count = count - 10;
else
count = count + 10;
}
2、逗號運算子
- 逗號用來連線兩個表示式,並以其右邊的表示式的值作為它的結果。
- 逗號的優先順序是所有的運算子中最低的,所以它兩邊的表示式會先計算
- 逗號的組合關係時自左向右,所以左邊的表示式會先計算,而右邊的表示式的值就留下來作為逗號運算的結果
- 逗號運算子主要運用於for迴圈中,for(i-0,j=10; ; ...)
- ex1:
#include <stdio.h>
#include <stdbool.h>
int main()
{
int i;
i = 3+4,5+6;
printf("%d",i);
return 0;
}
三、級聯和巢狀的判斷
1、巢狀的if-else
- 當if的條件滿足或者不滿足的時候要執行的語句也可以是一條if或if-else語句,這就是巢狀的if語句
- else總是和最近的if匹配
- ex1:
#include <stdio.h>
int main()
{
const int ready = 24;
int code = 0;
int count = 0;
scanf("%d %d",&code,&count);
if(code == ready){
if(count<20)
printf("一切正常\n");
}else
printf("繼續等待\n");//else跟第一個if匹配
return 0;
}
2、級聯的if-else
- 一般用於分段函式等場景
- ex1:
#include <stdio.h>
int main()
{
int x;
if(x<0){
...
}else if(x==0){
.....
}else{
.....
}
}
3、多路分支(switch-case)
- switch語句可以看作是一種基於計算的跳轉,在執行完分支中的最後一條語句後,如果後面沒有break,就會順序執行到下面的case裡去,直到遇到一個break,或者switch結束位置
- ex1:
#include <stdio.h>
int main()
{
int type;
scanf("%d",&type);
//switch(控制表示式必須是整型)
//case 後面可以是常量也可以是運算式
switch(type){
case 1:
...;
break;
case 2:
...;
break;
default:
...;
}
}