?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
表達(dá)式是一系列運(yùn)算符及其操作數(shù),用于指定計(jì)算。
表達(dá)式評(píng)估可能會(huì)產(chǎn)生一個(gè)結(jié)果(例如,2+2
產(chǎn)生結(jié)果的評(píng)估4
),可能會(huì)產(chǎn)生副作用(例如,printf("%d",4)
將字符發(fā)送'4'
到標(biāo)準(zhǔn)輸出流的評(píng)估),并可能指定對(duì)象或函數(shù)。
值類別(左值,非左值對(duì)象,函數(shù)指示符)通過它們的值對(duì)表達(dá)式進(jìn)行分類
參數(shù)和子表達(dá)式的評(píng)估順序指定了獲得中間結(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ùn)算符優(yōu)先級(jí)定義了運(yùn)算符綁定到它們的參數(shù)的順序
備選表述是一些運(yùn)營(yíng)商的備選拼寫
隱式轉(zhuǎn)換發(fā)生在操作數(shù)的類型與操作符的期望不匹配時(shí)
強(qiáng)制轉(zhuǎn)換可用于將值從一種類型顯式轉(zhuǎn)換為另一種類型。
可以在編譯時(shí)計(jì)算常量表達(dá)式并在編譯時(shí)上下文中使用(非 VLA 數(shù)組大小,靜態(tài)初始化器等)
通用選擇可以根據(jù)參數(shù)的類型執(zhí)行不同的表達(dá)式
浮點(diǎn)表達(dá)式可能會(huì)引發(fā)異常并報(bào)告 math_errhandling 中指定的錯(cuò)誤
標(biāo)準(zhǔn)編譯指示FENV_ACCESS
,FP_CONTRACT
和CX_LIMITED_RANGE
以及浮點(diǎn)評(píng)價(jià)精度和舍入方向控制浮點(diǎn)表達(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)識(shí)符(例如n
或printf
)
3)通用選擇
括號(hào)中的任何表達(dá)式也被分類為主要表達(dá)式:這保證括號(hào)的優(yōu)先級(jí)高于任何運(yùn)算符。
某些類型的常量值可以使用稱為文字(用于左值表達(dá)式)和常量(用于非左值表達(dá)式)的專用表達(dá)式嵌入C程序的源代碼中。
整數(shù)常量是整數(shù)類型的十進(jìn)制,八進(jìn)制或十六進(jìn)制數(shù)字。
字符常數(shù)是int類型的單個(gè)字符適于轉(zhuǎn)換為字符類型或類型char16_t
,char32_t
(因?yàn)镃11)或wchar_t
浮動(dòng)常數(shù)類型的值float
,double
或long double
字符串文字的類型的字符序列char[]
,char16_t[]
,char32_t[]
,或wchar_t[]
表示空終止字符串
復(fù)合文字是直接嵌入程序代碼中的結(jié)構(gòu)體,聯(lián)合體或數(shù)組類型的值
sizeof 運(yùn)算符的操作數(shù),_Alignof 運(yùn)算符和一般選擇的控制表達(dá)式(自C11以來)是不被評(píng)估的表達(dá)式(除非它們是 VLA)(自C99以來)。因此,size_t
n =
sizeof(printf("%d", 4));
不執(zhí)行控制臺(tái)輸出。
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