4.1.3 処理系依存

言語仕様で規定していない処理系定義項目について、コンパイラの仕様を示します

(1)

環境

表 4.1

環境の仕様

 

項目

コンパイラの仕様

1

main関数への実引数の意味

規定しません。

2

対話的入出力装置の構成

規定しません。

 

(2)

識別子

表 4.2

識別子の仕様

 

項目

コンパイラの仕様

1

外部結合とならない識別子(内部名)の有効文字数

8189文字まで有効です。

2

外部結合となる識別子(外部名)の有効文字数

8191文字まで有効です。

3

外部結合となる識別子(外部名)の大文字と小文字の区別

大文字と小文字を区別します。

(3)

文字

表 4.3

文字の仕様

 

項目

コンパイラの仕様

1

ソース文字集合および実行環境文字集合の要素

どちらもASCII文字集合です。ただし、文字列、文字定数にはシフトJIS、EUC漢字コード、Latin1コード、UTF-8コード、 big5コードまたはgb2312コードを記述できます。

2

多バイト文字のコード化で使用されるシフト状態

シフト状態はサポートしていません。

3

プログラム実行時の文字集合の文字のビット数

ビット数は8ビットです。

4

文字定数内、文字列内のソース文字集合の文字と実行環境文字集合の文字との対応付け

同じASCII文字に対応します。

5

言語で規定していない文字や拡張表記を含む整数文字定数の値

言語で規定する以外の文字、拡張表記はサポートしていません。

6

2文字異常の文字を含む文字定数または2文字異常の多バイト文字を含む広角文字定数の値

文字定数は上位2バイトを有効とします。広角文字定数はサポートしていません。

また、1文字より多く指定した場合はウォーニングエラーを出力します。

7

多バイト文字を広角文字に変換するために使用されるlocaleの仕様

localeはサポートしていません。

8

char型の値

unsigned char型と同じ値の範囲を持ちます。*1

注 1.

signed_charオプションを指定した場合、signed char型と同じ値の範囲を持ちます。

 

(4)

整数

表 4.4

整数の仕様

 

項目

コンパイラの仕様

1

整数型の表現方法とその値

表 4.5に示します。

2

整数の値がより短いサイズの符号付き整数型、または符号なし整数型を同一のサイズの符号付き整数型に変換したときの値(結果の値が変換先の型で表現できない場合)

整数の値の下位4バイト(変換後の型のサイズが4バイトの場合)、下位2バイト(変換後の型のサイズが2バイトの場合)あるいは下位1バイト(変換後の型のサイズが1バイトの場合)が変換後の値となります。

3

符号付き整数に対するビットごとの演算の結果

符号付きの値になります。

4

整数除算における剰余の符号

被除数の符号と同符号になります。

5

負の値を持つ符号付きスカラ型の右シフトの結果

符号ビットを保持します。

表 4.5

整数型とその値の範囲

 

値の範囲

データサイズ

1

char*1

0〜255

1バイト

2

signed char

-128〜127

1バイト

3

unsigned char

0〜255

1バイト

4

short

signed short

-32768〜32767

2バイト

5

unsigned short

0〜65535

2バイト

6

int*2

signed int*2

-2147483648〜2147483647

4バイト

7

unsigned int*2

0〜4294967295

4バイト

8

long

signed long

-2147483648〜2147483647

4バイト

9

unsigned long

0〜4294967295

4バイト

10

long long

signed long long

-9223372036854775808〜9223372036854775807

8バイト

11

unsigned long long

0〜18446744073709551615

8バイト

注 1.

signed_charオプションを指定した場合、signed char型と同じ値の範囲を持ちます。

注 2.

int_to_shortオプションを指定した場合、int型はshort型、signed int型はsigned short型、unsigned int型はunsigned short型としてそれぞれ扱います。

 

(5)

浮動小数点

表 4.6

浮動小数点の仕様

 

項目

コンパイラの仕様

1

浮動小数点の表現方法とその値

浮動小数点型には、float型、double型とlong double型があります。浮動小数点型の内部表現や変換仕様、演算仕様等の性質は「4.1.4 (5) 浮動小数点型の仕様」で説明します。表3.7に、浮動小数点型の表現可能な値の限界値を示します。

2

整数を本来の値に正確に表現することができない浮動小数点型に変換したときの切り捨て方向

3

浮動小数点型をより狭い浮動小数点型に変換したときの切り捨てまたは丸め方法

表 4.7

浮動小数点型の限界値

 

項目

限界値

10進数表現*1

内部表現(16進数)

1

float型の最大値

3.4028235677973364e+38f (3.4028234663852886e+38f)

7f7fffff

2

float型の正の最小値

7.0064923216240862e-46f (1.4012984643248171e-45f)

00000001

3

double*2

long double*2

型の最大値

1.7976931348623158e+308 (1.7976931348623157e+308)

7fefffffffffffff

4

double*2

long double*2

型の正の最小値

4.9406564584124655e-324 (4.9406564584124654e-324)

0000000000000001

注 1.

10進数表現の限界値は0または無限大にならない限界値です。また、( )内は理論値を示します。

注 2.

dbl_size=8を指定した場合の解釈です。dbl_size=4を指定した場合、double型およびlong double型はfloat型と同じ値となります。

 

(6)

配列とポインタ

表 4.8

配列とポインタの仕様

 

項目

コンパイラの仕様

1

配列の大きさの最大値を保持するために必要な整数の型(size_t)

unsigned long型

2

ポインタ型から整数型への変換

(ポインタ型のサイズ≧整数型のサイズ)

ポインタ型の下位バイトの値になります。

3

ポインタ型から整数型への変換

(ポインタ型のサイズ<整数型のサイズ)

ゼロ拡張します。

4

整数型からポインタ型への変換

(整数型のサイズ≧ポインタ型のサイズ)

整数型の下位バイトの値となります。

5

整数型からポインタ型への変換

(整数型のサイズ<ポインタ型のサイズ)

符号拡張します。

6

同じ配列内のメンバのポインタ間の差を保持するために必要な整数の方(ptrdiff_t)

int型

 

(7)

レジスタ

表 4.9

レジスタの仕様

 

項目

コンパイラの仕様

1

レジスタに割り付けることができる変数の型

char, signed char, unsigned char, bool, _Bool, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, ポインタ

(8)

クラス、構造体、共用体、列挙型、ビットフィールド

表 4.10

クラス、構造体、共用体、列挙型、ビットフィールドの仕様

 

項目

コンパイラの仕様

1

異なる型のメンバでアクセスされる共用体型のメンバ参照

参照はできますが、値は保証しません。

2

クラス・構造体メンバのアライメント

クラス・構造体メンバ中のアライメント数の最大値がそのクラス・構造体のアライメント数になります。「4.1.4 (2) 構造体/共用体(C言語)、クラス型(C++言語)」を参照してください。

3

単なるint型のビットフィールドの符号

unsigned int型 *3

4

int型のサイズ内のビットフィールドの割り付け順序

下位ビットから割り付けます。*1*2

5

int型のサイズ内にビットフィールドが割り付けられているとき、次に割り付けるビットフィールドのサイズがint型内の残っているサイズを超えたときの割り付け方

次のint型の領域に割り付けます。*1

6

ビットフィールドで許される型指定子

char、unsigned char、bool、_Bool、short、unsigned short、int、unsigned int、long、unsigned long、enum、long long、unsigned long long

7

列挙型の値を表現する整数型

signed long型です。*4

注 1.

ビットフィールドの割り付け方の詳細については、「4.1.4 データの内部表現と領域」を参照してください。

注 2.

bit_order=leftオプションを指定した場合、上位ビットから割り付けられます。

注 3.

signed_bitfieldオプションを指定した場合、signed int型となります。

注 4.

auto_enumオプションを指定した場合、列挙値が収まる最小の型となります。詳細は、「オプション」の章の「コンパイル・オプション」のauto_enumオプションの説明を参照ください。

 

(9)

型修飾子

表 4.11

型修飾子の仕様

 

項目

コンパイラの仕様

1

volatile修飾したデータへのアクセスの種類

規定しません。

 

(10)

宣言

表 4.12

宣言の仕様

 

項目

コンパイラの仕様

1

基本型(算術型、構造体型、共用体型)を修飾する宣言子の数

16個まで指定できます。

 

基本型を修飾する型の数の数え方を、以下に例を用いて示します。

(i) int a; aはint型(基本型)であり、基本型を修飾する型の数は0個です。

(ii) char *f(); fはchar型(基本型)へのポインタ型を返す関数型であり、基本型を修飾する型の数は2個です。

 

(11)

表 4.13

文の仕様

 

項目

コンパイラの仕様

1

一つのswitch文中で指定できるcaseラベルの数

2147483646個まで指定できます。

 

(12)

プリプロセッサ

表 4.14

プリプロセッサの仕様

 

項目

コンパイラの仕様

1

条件コンパイルの定数式内の単一文字の文字定数と実行環境文字集合の対応

プリプロセッサ文の文字定数と実行環境文字集合は一致します。

2

インクルードファイルの読み込み方法

「<」、「>」で囲まれたファイルはincludeオプションで指定されたパスから読み込みます。

ファイルが見つからない場合、次に環境変数INC_RX指定フォルダを検索します。

3

二重引用符で囲まれたインクルードファイルのサポートの有無

サポートします。インクルードファイルを#includeを記述したファイルの格納フォルダから読み込みます。ファイルが見つからない場合、本表2項の読み込み方法に従います。

4

ソースファイルの文字の並びの対応(マクロ展開後の文字列の空白文字)

空白文字列は、空白文字1文字として展開します。

5

#pragmaの動作

4.2.3 #pragma指令」を参照してください。

6

_ _DATE_ _、_ _TIME_ _の値

コンパイル開始時のホストマシンのタイマに基づく値が設定されます。