?
このドキュメントでは、 php中國語ネットマニュアル リリース
表達(dá)式是一系列運算符及其操作數(shù),用于指定計算。
表達(dá)式評估可能會產(chǎn)生一個結(jié)果(例如,2+2
產(chǎn)生結(jié)果的評估4
),可能會產(chǎn)生副作用(例如,printf("%d",4)
將字符發(fā)送'4'
到標(biāo)準(zhǔn)輸出流的評估),并可能指定對象或函數(shù)。
值類別(左值,非左值對象,函數(shù)指示符)通過它們的值對表達(dá)式進(jìn)行分類
參數(shù)和子表達(dá)式的評估順序指定了獲得中間結(jié)果的順序
| Common operators |
|:----|
| assignment | incrementdecrement | arithmetic | logical | comparison | memberaccess | other |
| a = b a += b a -= b a *= b a /= b a %= b a &= b a |= b a ^= b a <<= b a >>= b. | ++a --a a++ a-- | +a -a a + b a - b a * b a / b a % b ~a a & b a | b a ^ b a << b a >> b. | !a a && b a || b. | a == b a != b a < b a > b a <= b a >= b. | ab *a &a a->b a.b. | a(...) a, b (type) a ? : sizeof _Alignof (since C11). |
運算符優(yōu)先級定義了運算符綁定到它們的參數(shù)的順序
備選表述是一些運營商的備選拼寫
隱式轉(zhuǎn)換發(fā)生在操作數(shù)的類型與操作符的期望不匹配時
強制轉(zhuǎn)換可用于將值從一種類型顯式轉(zhuǎn)換為另一種類型。
可以在編譯時計算常量表達(dá)式并在編譯時上下文中使用(非 VLA 數(shù)組大小,靜態(tài)初始化器等)
通用選擇可以根據(jù)參數(shù)的類型執(zhí)行不同的表達(dá)式
浮點表達(dá)式可能會引發(fā)異常并報告 math_errhandling 中指定的錯誤
標(biāo)準(zhǔn)編譯指示FENV_ACCESS
,FP_CONTRACT
和CX_LIMITED_RANGE
以及浮點評價精度和舍入方向控制浮點表達(dá)式的執(zhí)行方式。
任何操作符的操作數(shù)可能是其他表達(dá)式,或者它們可能是主要表達(dá)式(例如,在1+2*3
,操作符的操作數(shù)是子表達(dá)式2*3
和主表達(dá)式1
)。
主要表達(dá)式有以下幾種:
1)常量和文字(例如2
或"Hello, world"
)
2)適當(dāng)?shù)芈暶鞯臉?biāo)識符(例如n
或printf
)
3)通用選擇
括號中的任何表達(dá)式也被分類為主要表達(dá)式:這保證括號的優(yōu)先級高于任何運算符。
某些類型的常量值可以使用稱為文字(用于左值表達(dá)式)和常量(用于非左值表達(dá)式)的專用表達(dá)式嵌入C程序的源代碼中。
整數(shù)常量是整數(shù)類型的十進(jìn)制,八進(jìn)制或十六進(jìn)制數(shù)字。
字符常數(shù)是int類型的單個字符適于轉(zhuǎn)換為字符類型或類型char16_t
,char32_t
(因為C11)或wchar_t
浮動常數(shù)類型的值float
,double
或long double
字符串文字的類型的字符序列char[]
,char16_t[]
,char32_t[]
,或wchar_t[]
表示空終止字符串
復(fù)合文字是直接嵌入程序代碼中的結(jié)構(gòu)體,聯(lián)合體或數(shù)組類型的值
sizeof 運算符的操作數(shù),_Alignof 運算符和一般選擇的控制表達(dá)式(自C11以來)是不被評估的表達(dá)式(除非它們是 VLA)(自C99以來)。因此,size_t
n =
sizeof(printf("%d", 4));
不執(zhí)行控制臺輸出。
C11 standard (ISO/IEC 9899:2011):
6.5 Expressions (p: 76-105)
6.6 Constant expressions (p: 106-107)
C99 standard (ISO/IEC 9899:1999):
6.5 Expressions (p: 67-94)
6.6 Constant expressions (p: 95-96)
C89/C90 standard (ISO/IEC 9899:1990):
3.3 EXPRESSIONS
3.4 CONSTANT EXPRESSIONS