- 大話C語言
- 蔡蘇北 范志軍編著
- 1521字
- 2021-03-27 00:08:31
2.4 表達式與語句
2.4.1 表達式
前面講述了很多的C語言運算符,其中每一個運算符的使用會構成一個表達式,即有賦值表達式、算術表達式、關系表達式、邏輯表達式、位運算表達式、條件表達式、逗號表達式等。不光這些運算符能構成表達式,函數調用也可以稱為C語言的表達式,而C語言中最簡單的表達式莫過于單個的常量值,如整型常量“10”、字符常量'A'等。
C語言中每個表達式都會產生一個值,例如最簡單的表達式的值是常量值,賦值表達式的值是最終左操作數的值,而關系表達式和邏輯表達式的值非0(假)即1(真)。
表達式中若含有運算符,那么根據運算符優先級的不同,表達式的求值順序也會發生變化,不過我們可以通過“( )”來改變優先級。例如一個算術表達式:2 + 3 * 5,由于乘法的優先級比加法高,所以會先計算3 * 5,然后再將結果15與2相加,得到整個表達式的值17。在一個表達式中的各運算符的優先級情況如表2.15所示。
表2.15 運算符優先級

我們把這些運算符按照優先級的不同劃分為15個等級,1級為最高優先級,15為最低優先級。另外,需要注意的是表中的最后一項“結合性”,所謂結合性就是當一個表達式中出現了多個同一優先級的運算符時的求值順序,例如“3+4–5”,這個表達式中的兩個運算符“+”和“–”具有相同的優先級,那么就按照從左至右的順序進行運算,即先求“3+4”,得出結果7,然后再求“7–5”,最終表達式的值為2。而對于“a=b=10”這樣的表達式也是合法的,因為賦值運算符的結合性是從右至左,所以首先會把10賦給變量b,然后再把變量b的值賦給變量a,而整個表達式的值就是變量a的值。
2.4.2 語句
當我們去欣賞一篇文章時,總是從頭一句一句細細地閱讀,從中品味作者的思想和意境。C程序也是如此,程序啟動后通過不斷地執行語句來實現所要達到的功能。對于文章,通常都是以一個句號“。”來表示一句話的結束,而C程序代碼則是以一個分號“;”來表示一個語句的結束。假如我們在一個表達式后面加上了分號,就構成了一條C語言的表達式語句,例如:
int a=10; 3+4+5;
第一條語句的作用是定義了一個整型變量a,并把常量值10初始化給了它;第二條語句的功能是計算三個數相加的和,但這個結果沒有被使用,所以這樣的語句對于程序而言沒什么實質性的作用,僅僅說明了它是一條語句,徒增代碼量而已。我們可以稱之為“垃圾語句”,大家在以后所寫的代碼中不要出現這樣的“垃圾語句”。
不過,在C語言中可以有只包含一個分號的語句,我們稱為“空語句”,通常會出現在一個循環中。關于循環我們后面會講到,現在只研究這個空語句,它和前面所講的垃圾語句有所不同。在程序中若出現垃圾語句會讓代碼的閱讀者一頭霧水,產生疑問。是不是代碼寫錯了?它的作用和意義是什么?雖然空語句和垃圾語句一樣也沒什么實際功能,但代碼閱讀者看到空語句就會明確地知道編寫者的意圖:哦!原來這兒什么事情都不用做。
在第一個C程序中,我們在主函數里有這樣一條語句:
printf("第一個C程序!\n");
我們在主函數中調用了標準庫里的printf函數,這樣的語句就稱為函數調用語句。這種語句的作用是讓程序通過函數的調用來實現某些特殊的功能,例如這里使用printf函數在控制臺窗口上打印輸出一條信息。關于這個printf函數的強大功能,我們在下一小節會詳細討論。
除了表達式語句、空語句和函數調用語句之外,C語言中還有標簽語句、流程控制語句等等,這些語句將在后面的章節中進行學習。最后,講一下C語言中比較特殊的一種語句:復合語句。
在C語言中,把一條或多條語句用大括號“{}”括起來就構成了復合語句。我們甚至可以把一個復合語句看成是單條語句,也就是把復合語句中的所有語句看成是一個整體,程序執行的時候,復合語句中的所有語句要么都被執行,要么都不被執行。在第3章的分支和循環里會經常用到這種復合語句。
- Dynamics 365 for Finance and Operations Development Cookbook(Fourth Edition)
- HTML5+CSS3王者歸來
- Effective C#:改善C#代碼的50個有效方法(原書第3版)
- Learning ArcGIS Pro 2
- 3D少兒游戲編程(原書第2版)
- Mastering Predictive Analytics with Python
- Apache Mesos Essentials
- C語言程序設計
- HTML5從入門到精通(第4版)
- Spring Boot+Vue全棧開發實戰
- Python函數式編程(第2版)
- Mastering HTML5 Forms
- TypeScript圖形渲染實戰:2D架構設計與實現
- 一步一步學Spring Boot:微服務項目實戰(第2版)
- Enterprise Application Architecture with .NET Core