1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> int main( void ) { if (1) { printf ( "Hello, world!\n" ); } return 0; } /* 《程式語言教學誌》的範例程式 檔名:constexpr.c 功能:示範常數運算式 作者:張凱慶 時間:西元2010年4月 */ |
第 5 行
5 | if (1) { |
if 後面所接的小括弧需要一個運算式,此處只代入整數 1 ,亦即為常數運算式。
編譯然後執行,如下

呼叫函數也屬於運算式的一種,如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> int main( void ) { int i; if ( scanf ( "%d" , &i)) { printf ( "i = %d\n" , i); } return 0; } /* 《程式語言教學誌》的範例程式 檔名:funexpr.c 功能:示範呼叫函數當作運算式 作者:張凱慶 時間:西元2010年4月 */ |
由於函數 scanf() 執行失敗會回傳 0 ,而成功會回傳非 0 的整數值,所以放在 if 陳述中的條件運算式裡的時候,若執行成功就會印出以下 i 等於輸入整數的文字。
編譯以上程式然後執行,如下

由運算子與運算元所組成的運算式,會依結合規則及優先次序進行計算,全部運算子如下列表
運算子 | 結合規則 |
---|---|
() [] -> . | 左到右 |
! ~ ++ -- + - * & (type) sizeof | 右到左 |
* / % | 左到右 |
+ - | 左到右 |
<< >> | 左到右 |
< <= > >= | 左到右 |
== != | 左到右 |
& | 左到右 |
^ | 左到右 |
| | 左到右 |
&& | 左到右 |
|| | 左到右 |
?: | 右到左 |
= += -= /= %= &= | 右到左 |
^= |= <<= >>= | 右到左 |
, | 左到右 |
其中,小括弧具有最高的優先權,因此當運算式中任何部份需要先計算時,可以直接用小括號圍起來,無須考量運算子的優先次序。如以下程式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> int main( void ) { printf ( "%d\n" , 15 + 2 * 8); printf ( "%d\n" , 15 + (2 * 8)); printf ( "%d\n" , (15 + 2) * 8); return 0; } /* 《程式語言教學誌》的範例程式 檔名:parenexpr.c 功能:示範小括弧影響計算的優先次序 作者:張凱慶 時間:西元2010年4月 */ |
第 5 行及第 6 行的結果相同,因為原本乘法的優先次序就高於加法,第 7 行的小括弧圍住加法的部份,因此加法會先進行計算。
編譯此程式,結果如下

C 語言的運算式可以很複雜,小括弧在複雜運算式中有助於理解計算次序。以下,我們分開討論各種運算子所組成的運算式
沒有留言:
張貼留言