表示式
表示式求值可能會產生結果(例如,2 + 2 的求值產生結果 4),可能會產生副作用(例如,printf("%d", 4) 的求值將字元 '4' 傳送到標準輸出流),並且可能會指定物件或函式。
目錄 |
[編輯] 概述
[編輯] 運算子
常見運算子 | ||||||
---|---|---|---|---|---|---|
賦值 | 遞增 遞減 |
算術 | 邏輯 | 比較 | 成員 訪問 |
其他 |
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
[編輯] 轉換
[編輯] 其他
- 常量表達式可以在編譯時求值,並在編譯時上下文中使用(非變長陣列(C99 起)陣列大小、靜態初始化器等)
|
(C11 起) |
|
(C99 起) |
[編輯] 主表示式
任何運算子的運算元可以是其他表示式,也可以是主表示式(例如,在 1 + 2 * 3 中,運算子 + 的運算元是子表示式 2 * 3 和主表示式 1)。
主表示式可以是以下任何一種:
3) 泛型選擇
|
(C11 起) |
任何加括號的表示式也被歸類為主表示式:這保證了括號比任何運算子具有更高的優先順序。
[編輯] 常量與字面量
某些型別的常量值可以使用稱為字面量(對於左值表示式)和常量(對於非左值表示式)的專門表示式嵌入 C 程式的原始碼中
- 整型常量是整型的十進位制、八進位制或十六進位制數字。
- 字元常量是 int 型別的單個字元,適用於轉換為字元型別,或是 char8_t、(C23 起) char16_t、char32_t 或(C11 起) wchar_t 型別。
- 浮點常量是 float、double 或 long double 型別的值。
|
(自 C23 起) |
- 字串字面量是 char[]、char8_t[](C23 起)、char16_t[]、char32_t[] 或(C11 起) wchar_t[] 型別的字元序列,表示以 null 結尾的字串。
|
(C99 起) |
[編輯] 未求值表示式
sizeof 運算子的運算元是未求值的表示式(除非它們是變長陣列)(C99 起)。因此,size_t n = sizeof(printf("%d", 4)); 不會執行控制檯輸出。
|
(C11 起) |
[編輯] 引用
- C23 標準 (ISO/IEC 9899:2024)
- 6.5 表示式 (p: 待定)
- 6.6 常量表達式 (p: 待定)
- C17 標準 (ISO/IEC 9899:2018)
- 6.5 表示式 (p: 55-75)
- 6.6 常量表達式 (p: 76-77)
- C11 標準 (ISO/IEC 9899:2011)
- 6.5 表示式 (p: 76-105)
- 6.6 常量表達式 (p: 106-107)
- C99 標準 (ISO/IEC 9899:1999)
- 6.5 表示式 (p: 67-94)
- 6.6 常量表達式 (p: 95-96)
- C89/C90 標準 (ISO/IEC 9899:1990)
- 3.3 表示式
- 3.4 常量表達式
[編輯] 參閱
C++ 文件關於表示式
|