Expressions
式は、 operators とその operands の連続であり、計算を指定するものです。
式の評価は、結果を生成することがあります(例えば、 2 + 2 の評価は結果 4 を生成します)、副作用を生成することがあります(例えば、 printf ( "%d" , 4 ) の評価は文字 '4' を標準出力ストリームに送信します)、またオブジェクトや関数を指定することがあります。
目次 |
一般
- value categories (lvalue, non-lvalue object, function designator) は式をその値によって分類します
- order of evaluation は引数と部分式の中間結果が得られる順序を指定します
演算子
| 一般的な演算子 | ||||||
|---|---|---|---|---|---|---|
| 代入 |
インクリメント
デクリメント |
算術 | 論理 | 比較 |
メンバー
アクセス |
その他 |
|
a
=
b
|
++
a
|
+
a
|
!
a
|
a
==
b
|
a
[
b
]
|
a
(
...
)
|
変換
その他
- 定数式 はコンパイル時に評価され、コンパイル時コンテキストで使用できます( 非VLA (C99以降) 配列サイズ、静的初期化子など)
|
(C11以降) |
|
(C99以降) |
基本式
任意の演算子のオペランドは、他の式であるか、あるいは 基本式 である(例えば、 1 + 2 * 3 において、operator+のオペランドは部分式 2 * 3 と基本式 1 である)。
一次式は以下のいずれかです:
|
3)
ジェネリック選択
|
(C11以降) |
括弧内の任意の式もまた基本式として分類されます:これにより、括弧が任意の演算子よりも高い優先順位を持つことが保証されます。
定数とリテラル
Cプログラムのソースコード内では、特定の型の定数値を、リテラル(左辺値式の場合)および定数(非左辺値式の場合)として知られる特殊な式を使用して埋め込むことができます。
- integer constants は整数型の10進数、8進数、または16進数です。
- character constants は文字型への変換に適した int 型の個々の文字、または char8_t , (since C23) char16_t , char32_t , または (since C11) wchar_t 型の個々の文字です。
- floating constants は float 、 double 、または long double 型の値です。
|
(C23以降) |
- 文字列リテラル は、 char [ ] 、 char8_t [ ] (C23以降) 、 char16_t [ ] 、 char32_t [ ] 型の文字シーケンス (C11以降) または wchar_t [ ] で、null終端文字列を表します
|
(C99以降) |
未評価式
sizeof operator のオペランドは評価されない式です (VLAでない限り) (C99以降) 。したがって、 size_t n = sizeof ( printf ( "%d" , 4 ) ) ; はコンソール出力を実行しません。
|
|
(since C11) |
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 6.5 式 (p: 未定)
-
- 6.6 定数式 (p: 未定)
- C17規格(ISO/IEC 9899:2018):
-
- 6.5 式(pp: 55-75)
-
- 6.6 定数式(pp: 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++ ドキュメント
for
Expressions
|