標籤:
一、關係運算子
雙目運算子 自左向右結合
關係運算子的優先順序低於算術運算子,高於賦值運算子
- <(小於)
- <=(小於或等於)
- >(大於)
- >=(大於或等於)
- ==(等於)
- !=(不等於)
二、關聯運算式
值為真或者假 用1和0表示
如:5>0的值為“真”,即為1;
三、邏輯運算子
與運算子(&&)和或運算子(||)均為雙目運算子。具有左結合性。非運算子(!)為單目運算子,具有右結合性
- &&(與運算)
- ||(或運算)
- !(非運算)
四、邏輯運算式的值
值也為真和假兩種,用1和0來表示。
&& 兩個都為真才是真
|| 只要一個為真就是真 兩個為假才是假
! 真時假,假時真
注意一些隱式條件,有時不需要計算後面的式子
如 int a = 3;
if((a > 6) && (a = 4)){
a = 5;
}
結果a還是為3 因為a>6 已經為假了,就不用執行 a = 4 了
五、if語句
第一種形式為基本形式:if
if(運算式) 語句
其語義是:如果運算式的值為真,則執行其後的語句,否則不執行該語句。
第二種形式為: if-else
if(運算式)
語句1;
else
語句2;
其語義是:如果運算式的值為真,則執行語句1,否則執行語句2 。
第三種形式為if-else-if形式
前二種形式的if語句一般都用於兩個分支的情況。當有多個分支選擇時,可採用if-else-if語句,其一般形式為:
if(運算式1)
語句1;
else if(運算式2)
語句2;
else if(運算式3)
語句3;
…
else if(運算式m)
語句m;
else
語句n;
其語義是:依次判斷運算式的值,當出現某個值為真時,則執行其對應的語句。然後跳到整個if語句之外繼續執行程式。 如果所有的運算式均為假,則執行語句n。然後繼續執行後續程式。
六、switch
C語言還提供了另一種用於多分支選擇的switch語句, 其一般形式為:
switch(運算式){
case 常量運算式1: 語句1;
case 常量運算式2: 語句2;
…
case 常量運算式n: 語句n;
default: 語句n+1;
}
其語義是:計算運算式的值。 並逐個與其後的常量運算式值相比較,當運算式的值與某個常量運算式的值相等時, 即執行其後的語句,然後不再進行判斷,繼續執行後面所有case後的語句。如運算式的值與所有case後的常量運算式均不相同時,則執行default後的語句。
C語言還提供了一種break語句,專用於跳出switch語句,break 語句只有關鍵字break,沒有參數。
在使用switch語句時還應注意以下幾點:
- 在case後的各常量運算式的值不能相同,否則會出現錯誤。
- 在case後,允許有多個語句,可以不用{}括起來。
- 各case和default子句的先後順序可以變動,而不會影響程式執行結果。
- default子句可以省略不用。
七、條件運算子及運算式
條件運算子的結合方向是自右至左。
它是一個三目運算子,即有三個參與運算的量。由條件運算子組成條件運算式的一般形式為:
運算式1 ? 運算式2 : 運算式3
其求值規則為:如果運算式1的值為真,則以運算式2 的值作為條件運算式的值,否則以運算式2的值作為整個條件運算式的值。
練習:計算機程式。使用者輸入運算數和四則運算子,輸出計算結果。
- #include <stdio.h>
- int main(void){
- float a,b;
- char c;
- printf("input expression: a+(-,*,/)b \n");
- scanf("%f%c%f",&a,&c,&b);
- switch(c){
- case ‘+‘: printf("%f\n",a+b);break;
- case ‘-‘: printf("%f\n",a-b);break;
- case ‘*‘: printf("%f\n",a*b);break;
- case ‘/‘: printf("%f\n",a/b);break;
- default: printf("input error\n");
- }
- return 0;
- }
【C-分支結構】