C語言基礎-1、邏輯型別和運算

吃粥要吃烫的發表於2024-03-05

一、邏輯型別和運算

  • #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:
			...;
	}
}

相關文章