- return 語句
return 語句的作用是提供整個函數的返回值,並結束當前函數返回到調用它的地方。在沒有返回值的函數中也可以使用return 語句。例如當檢查到一個錯誤時提前結束當前函數的執行並返回:
int check_num(int num)
{
if ((num < 1) || (num > 12))
{
printf("invalid number!\n");
}
return num;
}
函數返回一個值相當於定義一個和返回值類型相同的臨時變數並用return 後面的表達式進行初始化。
- while 語句
和 if 語句類似,while 語句由一個控制表達式和一個子語句組成,子語句可以是由若干條語句組成的語句塊。
語句 ==> while(控制表達式)語句
如果控制表達式的值是真,子語句就被執行,然後再次測試控制表達式的值,如果還是真,就把子語句再執行一遍,再測試控制表達式的值,這種控制流程稱為循環(Loop), 子語句稱為循環體。如果某次測試控制表達式的值為假,就跳出循環執行後面的return 語句,如果第一次測試控制表達式的值就是假,那麼直接調到return語句,循環體一次都不執行。
- do/while 語句
do/while 語句的語法是:
語句 ==> do語句while (控制表達式);
while 語句先測試控制表達式的值再執行循環體,而do/while 語句先執行循環體再測試控制表達式的值。如果控制表達式的值一開始就是假,while語句的循環體一次都不執行,而do/while語句的循環體仍然要執行一次再跳出循環。
- for 語句
for 語句的語法是:
for (控制表達式1;控制表達式2; 控制表達式3) 語句
int factorial(int n)
{
int result = 1;
int i;
for(i = 1; i <= n; ++i)
result = result * i;
return result;
}
其中++i 這個表達式相當於i = i + 1, ++ 稱為前綴自增運算符,– 稱為前綴自減運算符,–i相當於i = i – 1。
++ 和 — 運算符 也可以用在變數後面,例如i++和i–, 為了和前綴運算符區別,這兩個運算符稱為後綴自增運算符和後綴自減運算符。
- break 語句和continue語句
break 語句的一種用法是用來跳出switch語句塊,這個語句也可以用來跳出循環體。continue 語句也會終止當前循環,和break語句不同的是,continue語句終止當前循環後又回到循環體的開頭準備執行下一次循環。對於while循環和do/while循環,執行continue語句之後測試控制表達式,如果值為真則繼續執行下一次循環;對於for 循環,執行continue語句之後首先計算控制表達式3,然後測試控制表達式2,如果值為真則繼續執行下一次循環。
#include <stdio.h>
int main(void)
{
int i = 0;
int j = 0;
for (i=1; i<=9; i++)
{
for (j=1; j<=9; j++)
{
printf("%d\t", i*j);
}
printf("\n");
}
return 0;
}
- goto 語句
如果在一個嵌套循環中遇到某個錯誤條件需要立即跳出最外層循環做出錯處理,就可以使用goto 語句。
for (...)
for (...) {
...
if (error)
goto ERROR;
}
ERROR:
handle error;
這裡的ERROR: 叫做標號,任何語句前面都可以加若干個標號,每個標號的命名也要遵循標識符的命名規則。
goto 只能跳轉到同一個函數中的某個標號處,而不能跳到別的函數。
和標號有關的語法規則如下:
語句 ==> 標識符: 語句
語句 ==> case 常量表達式: 語句
語句 ==> default: 語句
C 標準庫函數setjmp和longjmp 配合起來可以實現函數間的跳轉,但只能從被調用的函數跳回到它的直接或間接調用者(同時從棧空間彈出一個或多個棧幀),而不能從一個函數跳轉到另一個和它毫不相干的函數中。setjmp/longjmp函數主要也是用於出錯處理,比如函數A調用函數B,函數B調用函數C,如果在C中出現某個錯誤條件,使得函數B和C繼續執行下去都沒有意義了,可以利用setjmp/longjmp機制快速返回到函數A做出錯處理。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/207494.html