選擇結構:也叫分支結構。**會被分成多個部分,程式會根據特定條件(某個表示式的運算結果)來判斷到底執行哪一部分。
迴圈結構:程式會重新執行同一段**,直到條件不再滿足,或者遇到強行跳出語句。
關係運算子含 義
數學中的表示
<
小於<
<=
小於或等於
≤>
大於》>=
大於或等於≥==
等於=!=不等於
≠在六個關係運算子中,<、<=、>、>=的優先順序相同,高於==和!=,==和!=的優先順序相同。
在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...