式
式とは、計算を指定する演算子とオペランドのシーケンスです。
式の評価は、結果を生成したり(例:2 + 2の評価は4を生成)、副作用を生成したり(例:printf("%d", 4)の評価は文字'4'を標準出力ストリームに送信)、オブジェクトや関数を指定したりします。
目次 |
[編集] 一般
[編集] 演算子
| 共通の演算子 | ||||||
|---|---|---|---|---|---|---|
| 代入 | インクリメント デクリメント |
算術 | 論理 | 比較 | メンバ アクセス |
その他 |
|
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
[編集] 型変換
[編集] その他
- 定数式はコンパイル時に評価でき、コンパイル時コンテキストで使われます(非VLA(C99以降)配列サイズ、静的初期化子など)。
|
(C11 以降) |
|
(C99以降) |
[編集] 一次式
任意の演算子のオペランドは、他の式であるか、または一次式である場合があります(例: 1 + 2 * 3では、演算子+のオペランドは部分式2 * 3と一次式1です)。
一次式は以下のいずれかです。
|
3) 総称選択
|
(C11 以降) |
括弧内の任意の式も一次式として分類されます。これにより、括弧があらゆる演算子よりも高い優先順位を持つことが保証されます。
[編集] 定数とリテラル
特定の型の定数値は、リテラル(lvalue式の場合)および定数(非lvalue式の場合)として知られる特殊な式を使用して、Cプログラムのソースコードに埋め込むことができます。
- 整数定数は、整数型の10進数、8進数、または16進数です。
- 文字定数は、文字型への変換に適した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[]型の文字シーケンスです。
|
(C99以降) |
[編集] 未評価の式
sizeof演算子のオペランドは評価されない式です (VLAでない限り)(C99以降)。したがって、size_t n = sizeof(printf("%d", 4));はコンソール出力を実行しません。
|
|
(C11 以降) |
[編集] 参照
- C23標準 (ISO/IEC 9899:2024)
- 6.5 式 (p: TBD)
- 6.6 定数式 (p: TBD)
- 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++ ドキュメント: 式
|