官术网_书友最值得收藏!

  • C程序設計語言
  • 魏東平 朱連章 于廣斌編著
  • 1639字
  • 2018-12-29 14:37:38

3.1.2 C語言語句的分類

C語言程序的執行部分是由語句組成的,程序的功能也是由執行語句實現的。C語言語句的形式很多,一般可分為5類:表達式語句、函數調用語句、控制語句、復合語句、空語句。

1.表達式語句

表達式語句由表達式加上分號“;”組成,執行表達式語句就是計算表達式的值,其一般形式如下:

            表達式;

事實上,任何一個表達式后加上“;”就構成了表達式語句,如算術表達式、關系表達式等。最典型的是用賦值表達式組成的賦值語句。

需要注意的是,有的表達式語句有意義,有的表達式語句則沒有實際意義。例如:

①“a=1”是一個賦值表達式,而加上分號的“a=1;”則是一條賦值語句;

②“x=y+z”是一個賦值表達式,而加上分號的“x=y+z;”則是一條賦值語句;

③“i++”是一個表達式,而加上分號的“i++;”則是一條自增語句,i的值增1;

④“y+z;”是一條加法運算語句,但計算結果不能保留,無實際意義;

⑤“x;”也是一條“語句”,但不執行任何運算,毫無意義。

表達式能構成語句是C語言的一個重要特色。其實,下面要介紹的函數調用語句也可以看成是表達式語句,因為函數調用(如fabs(x))也是表達式的一種。只是為了便于理解和使用,才把“函數調用語句”和“表達式語句”分成兩類來介紹。由于C語言程序中的大多數語句是表達式語句(包括函數調用語句),因此,有時也把C語言稱為“表達式語言”。

2.函數調用語句

函數調用語句由函數名、括號、實際參數加上分號“;”組成,其一般形式為:

            函數名(實際參數表);

執行函數語句就是,調用函數體并把實際參數賦予函數定義中的形式參數,然后執行被調函數體中的語句,求取函數值。

例如:

            printf("This is a C program.");

是一個函數調用語句,將調用庫函數printf,在屏幕上輸出字符串“This is a C program.”。

當然,有函數調用不一定就是函數調用語句,例如:

            y=fabs(x);

調用了fabs函數,但最后執行的是賦值運算,即把x的絕對值賦給變量y,因此,這是一個賦值語句,屬于表達式語句??梢姡Z句的分類是由表達式中最后一個運算決定的。如果把這個語句改為“fabs(x);”,就變成了函數調用語句,當然由于計算結果被丟棄了,也就沒有實際意義了。

3.控制語句

控制語句用于控制程序的流程,以實現程序的各種基本結構??刂普Z句由特定的語句定義符組成。C語言共有9種控制語句,分成3類。

① 選擇語句又稱為條件語句、判斷語句,用于實現選擇結構的程序設計,包括if語句和switch語句。

② 循環語句又稱為重復語句,用于實現重復執行的循環結構的程序設計,包括while、do-while和for三個語句。

③ 轉移語句用于實現程序的跳轉,包括break、continue、goto和return四個語句。

控制語句的基本形式和使用方法將在后面的章節中逐步介紹。

4.復合語句

把任意多條語句用大括號“{}”括起來就構成了復合語句。例如:

            {
                x=y+z;
                a=b+c;
                printf("%d%d",x,a);
            }

是一條復合語句,由3條語句組成。

對于復合語句,需要注意:

① 在程序中應把復合語句看成是單條語句,而不是多條語句;

② 復合語句內的各條語句都必須以分號“;”結尾,最后一條語句的結尾也必須有分號“;”;

③ 復合語句中還可以包含復合語句,即復合語句允許嵌套,但必須保證嵌套是完整的,不允許交叉嵌套。

例如:

            1   {   x=1;
            2       {   y=x*x;
            3           x++;
            4   }
            5           y=x;
            6       }

從形式上看,似乎有兩條復合語句,它們是第1~4行組成的一條復合語句和第2~6行構成的另一條復合語句。但真實情況是,這里只有一條復合語句,由第1~6 行組成。該復合語句嵌套了另一個復合語句,由第2~4行組成。也就是說,該程序段應該寫成:

            1   {   x=5;
            2       {   y=x*x;
            3           x+=10;
            4       }
            5       y=x;
            6   }

不難想象,當程序中出現復合語句時,應該注意每一行的縮進與對齊方式,以免造成誤解。

5.空語句

只有一個分號“;”的語句稱為空語句。

空語句什么也不做,可用來作為被轉向點,或循環語句中的循環體(循環體是空語句,表示循環體什么也不做)。

例如:

            while(getchar()!='\n') ;

該語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。這里的循環體為空語句。

當程序中出現連續的兩個分號“;”時,一般可把后面的分號看做空語句。但要注意的是,隨意添加空語句可能造成錯誤,例如:

            if(x>y)z=x;;
            else z=y;

由于z=x的后面多使用了一個分號,造成下面的else子句出現語法錯誤,else與if之間多出了一個空語句。

主站蜘蛛池模板: 福清市| 安阳市| 岗巴县| 崇信县| 东光县| 铜鼓县| 金乡县| 罗甸县| 共和县| 白河县| 石泉县| 惠州市| 苍南县| 新民市| 武清区| 安顺市| 潜江市| 临江市| 锡林浩特市| 栾川县| 兴城市| 博湖县| 霍山县| 湟源县| 海阳市| 壶关县| 溆浦县| 三都| 灵川县| 静海县| 固镇县| 施秉县| 宽甸| 清流县| 柘城县| 阿坝县| 台北县| 仲巴县| 万源市| 金沙县| 会理县|