
88
5
章 式と演算子
y = sqrt((x=2.7, 2*x));
この文は、先ほどの例と等価になる。カンマ演算子は複数の式を1つにできる。これによ
り、
for
ループの先頭で、次の例のように、複数の変数を初期化または増分することができ
る。
int i; float fArray[10], val;
for (i=0, val=0.25; i < 10; ++i, val *= 2.0)
{
fArray[i] = val;
}
5.3
定数式
ソースコード中の定数式は、コンパイラによって認識され、その値に置き換えられる。
置き換える定数値は、式の型で表現可能でなければならない。単純な定数が許されるとこ
ろでは定数式が使える。
定数式の演算子には他の式と同じ規則が適用される。定数式は翻訳時に評価されるので、
関数呼び出しまたは代入のような変数の値を変更する演算を含むことはできない。
5.3.1
整数定数式
整数定数式は、整数型の定数式である。次の要素を定義するのに使う式だ。
●
配列のサイズ
●
列挙定数の値
●
ビットフィールドのサイズ
●
_Alignas
を用いた定義でのオブジェクトのアラインメント(C11)
●
switch
文の
case
定数の値
例えば、次のように配列を定義する。
#define BLOCK_SIZE 512
char buffer[4*BLOCK_SIZE];
整数定数式には次の種類のオペランドを使うことができる。
●
整数、文字、列挙の定数
●
sizeof
式と
_Alignas
式
定数式の
sizeof ...