C語言學習筆記 程式流程控制

2021-09-12 12:09:14 字數 3661 閱讀 1284

順序結構:**從前往後依次執行,沒有任何「拐彎抹角」,不跳過任何一條語句,所有的語句都會被執行到。

選擇結構:也叫分支結構。**會被分成多個部分,程式會根據特定條件(某個表示式的運算結果)來判斷到底執行哪一部分。

迴圈結構:程式會重新執行同一段**,直到條件不再滿足,或者遇到強行跳出語句。

關係運算子

含  義

數學中的表示

<

小於<

<=

小於或等於

≤>

大於》>=

大於或等於≥==

等於=!=不等於

≠在六個關係運算子中,<、<=、>、>=的優先順序相同,高於==和!=,==和!=的優先順序相同。

在c語言中,我們一般將零值稱為「假」,將非零值稱為「真」。邏輯運算的結果也只有「真」和「假」,「真」對應的值為 1,「假」對應的值為 0。

運算子說明結合性

舉例&&

與運算,雙目,對應數學中的「且」

左結合1&&0、(9>3)&&(b>a)

||或運算,雙目,對應數學中的「或」

左結合1||0、(9>3)||(b>a)

!非運算,單目,對應數學中的「非」

右結合!a、!(2<5)

邏輯運算子和其它運算子優先順序從低到高依次為:賦值運算子(=) < &&和|| < 關係運算子 < 算術運算子 < 非(!)。 

if 和 else 是兩個新的關鍵字,if 意為「如果」,else 意為「否則」,用來對條件進行判斷,並根據判斷結果執行不同的語句。由於if else 語句可以根據不同的情況執行不同的**,所以也叫分支結構或選擇結構總結起來,if else 的結構為:

if(判斷條件)else

如果語句塊中只有乙個語句,也可以省略。

有的時候,我們需要在滿足某種條件時進行一些操作,而不滿足條件時就不進行任何操作,這個時候我們可以只使用 if 語句。也就是說,if else 不必同時出現。

if else 語句也可以多個同時使用,構成多個分支,形式如下:

if(判斷條件1) else  if(判斷條件2)else  if(判斷條件3)else  if(判斷條件m)else

if 語句也可以巢狀使用,例如:

#include int main()

case 後面必須是乙個整數,或者是結果為整數的表示式,但不能包含任何變數。如下:

case 1+2: printf("..."); break;  //正確

case 'a': printf("..."); break; //正確,字元和整數可以相互轉換

case 'a'+1: printf("..."); break; //正確,字元和整數可以相互轉換

case 9.5: printf("..."); break; //錯誤,不能為小數

case a: printf("..."); break; //錯誤,不能包含變數

case a+1: printf("..."); break; //錯誤,不能包含變數

default 不是必須的。當沒有 default 時,如果所有 case 都匹配失敗,那麼就什麼都不執行。

語法格式為:表示式1 ? 表示式2 : 表示式3

條件運算子是c語言中唯一的乙個三目運算子,其求值規則為:如果表示式1的值為真,則以表示式2 的值作為整個條件表示式的值,否則以表示式3的值作為整個條件表示式的值。條件表示式通常用於賦值語句之中。如:

c = (a > b) ? a : b;    //如果a大於b,則c等於a,否則,c等於b

條件運算子的優先順序低於關係運算子和算術運算子,但高於賦值符。如上述程式段的括號可以省去。

條件運算子?和:是一對運算子,不能分開單獨使用。

條件運算子的結合方向是自右至左。例如下面2個程式段等價:

a>b ? a : c>d ? c : d;

<=>

a>b ? a : ( c>d ? c : d );

goto語句是一種無條件轉移語句,使用格式為:

goto  語句標號;

goto語句通常不用,主要因為它將使程式層次不清,且不易讀,但在多層巢狀退出時,用goto語句則比較合理。

while迴圈一般形式為:
while(表示式)

while迴圈規則:先計算「表示式」的值,當值為真(非0)時, 執行「語句塊」;執行完「語句塊」,再次計算表示式的值,如果為真,繼續執行「語句塊」……這個過程會一直重複,直到表示式的值為假(0),就退出迴圈,執行 while 後面的**。

do while迴圈一般形式:

do

while(表示式);

do while迴圈規則:先執行「語句塊」,然後再判斷表示式是否為真,如果為真則繼續迴圈;如果為假,則終止迴圈。因此,do-while 迴圈至少要執行一次「語句塊」。

continue 語句的作用是跳過迴圈體中剩餘的語句而強制進入下一次迴圈。continue語句只用在 while、for 迴圈中,常與 if 條件語句一起使用,判斷條件是否成立。

當 break 關鍵字用於 while、for迴圈時,會終止迴圈而執行整個迴圈語句後面的**。break 關鍵字通常和 if 語句一起使用,即滿足條件時便跳出迴圈。

一般形式為:

for(表示式1; 表示式2; 表示式3)

規則:「表示式1」僅在第一次迴圈時執行,以後都不會再執行,可以認為這是乙個初始化語句。「表示式2」一般是乙個關係表示式,決定了是否還要繼續下次迴圈,稱為「迴圈條件」。「表示式3」很多情況下是乙個帶有自增或自減操作的表示式,以使迴圈條件逐漸變得「不成立」。一般形式也可寫為:

for(初始化語句; 迴圈條件; 自增或自減)

for 迴圈中的「表示式1(初始化條件)」、「表示式2(迴圈條件)」和「表示式3(自增或自減)」都是可選項,都可以省略(但分號;必須保留)。

「表示式1」可以是初始化語句,也可以是其他語句。如:

i = 0;

for( sum=0; i<=100; i++ ) sum=sum+i;

「表示式1」和「表示式3」可以是乙個簡單表示式也可以是逗號表示式。如:

for( i=0,j=100; i<=100; i++,j-- )  k=i+j;

「表示式2」一般是關係表示式或邏輯表示式,但也可是數值或字元,只要其值非零,就執行迴圈體。如:

for( i=0; (s=getchar())!='\n'; i+=s );

在c語言中,if-else、while、do-while、for 都可以相互巢狀。所謂巢狀(nest),就是一條語句裡面還有另一條語句,例如 for 裡面還有 for,while 裡面還有 while,或者 for 裡面有 while,while 裡面有 if-else,這都是允許的。

GO語言學習 流程控制

迴圈 for 是go的唯一迴圈結構。for迴圈的使用方法與c語言的唯一區別是沒有了 另外可以省略分號。if if語句的使用方法與c語言的唯一區別是沒有了 if語句可以在條件之前執行乙個簡單的語句。例 ifv x n v lim 注意 這個語句定義的變數v的作用域僅在if範圍之內 包含else swi...

Go語言學習筆記 流程控制(二)

字典型別map 1 上節遺留 map字典型別 2 建立map make 例子 mymap make map string persioninfo 3 建立並初始化 mymap map string persioninfo,4 map賦值 mymap 1234 personinfo 5 刪除map元素...

C語言學習筆記(二) 流程控制 重點

第二章 流程控制 重點 if 的用法 if 表示式 對真假的處理 注意 if後括號內的表示式結果只有兩種,true 或false 為布林型,即成立或不成立。if 預設的只能控制乙個語句的執行 如果想控制多個語句的執行或不執行,就必須用 括起來 if 表示式 注意else與if 的對應,else與if...