定数宣言の書式を以下に示します。
const データ型 定数名 = 定数式;
定数宣言として使用できるデータ型を以下に示します。
整数型(long、short、unsigned long、unsigned short、long long)
浮動小数点型(float、double、long double)
文字型(char)
ブーリアン型(boolean)
文字列型(string)
定数式は、左辺のデータ型と対応する必要があります。
また、定数式内では、異なるデータ型を混在させることはできません。たとえば、整数型と浮動小数点型を混在させることはできません。
定数式に使用可能な定数を以下に示します。
整数定数
文字定数
浮動小数点定数
文字列定数
定数式では、以下に示す演算子が使用できます。
| 計算名 | 演算子 | 書き方 | 意味 |
---|---|---|---|---|
単項演算子 | 補数 | ~ | ~n | nの補数を作ります。 |
正符号 | + | +n | 正数を示します。 | |
負符号 | - | -n | 負数を示します。 | |
2項演算子 | 加算 | + | n1 + n2 | n1とn2を加算します。 |
減算 | - | n1 - n2 | n1からn2を減算します。 | |
乗算 | * | n1 * n2 | n1にn2を掛けます。 | |
除算 | / | n1 / n2 | n1をn2で割ります。 | |
剰余算 | % | n1 % n2 | n1をn2で割った余りです。 | |
左シフト | << | n1 << n2 | n1をn2ビット分左シフトします。 | |
右シフト | >> | n1 >> n2 | n1をn2ビット分右シフトします。 | |
論理積(AND) | & | n1 & n2 | n1とn2の論理積を作ります。 | |
論理和(OR) | | | n1 | n2 | n1とn2の論理和を作ります。 | |
排他的論理和(XOR) | ^ | n1 ^ n2 | n1とn2の排他的論理和を作ります。 |
整数定数式に負の整数定数が含まれている場合は、signed longとして扱われます。負符号/負の整数定数が含まれていない場合は、unsigned longとして扱われます。
計算結果の値は、宣言された定数のデータ型に変換されます。計算結果の値がデータ型の範囲を超えた場合、または計算途中でsigned long/unsigned longの範囲を超えた場合は、IDLコンパイル時/生成されたスタブ・スケルトンのコンパイル時にエラーとなります。
整数定数式では、上記のすべての演算子が使用できます。
浮動小数点定数式は、倍精度(double)に変換されて倍精度で計算されます。計算結果の値は、宣言されたデータ型に変換されます。この変換に失敗した場合、または計算途中の値が倍精度の範囲を超えた場合は、エラーとなります。
浮動小数点定数式では、以下の演算子が使用できます。
単項演算子:+、-
2項演算子:*、/、+、-
シフト演算を使用する場合、32ビット以上のデータ型(long long型)に対しても、n2に指定可能な最大値は31です。データ型の範囲以上のn2を指定した場合(short型に31ビットシフトなど)は、エラーとなります。
例
定数宣言の例を以下に示します。
const long l1 = 3; const long l2 = (3 + 2); const string S = "xxxxx"; typedef long X; const X l3 = 4;