Oracle Solaris Studio 12.2: C ユーザーガイド

B.2.84.1 —xcheck=init_local の初期化値

—xcheck=init_local を指定すると、次の表に示すように、コンパイラは初期設定子を指定しないで宣言されたローカル変数を事前定義された値に初期化します (これらの値は変更される可能性があるため、信頼しないでください)。

基本型

表 B–20 基本型の init_local の初期化

種類 

初期化値 

char, _Bool

0x85

short

0x8001

int, long, enum     (-m32)

0xff80002b

long    (-m64)

0xfff00031ff800033

long long

0xfff00031ff800033

pointer

0x00000001 (-m32)

0x0000000000000001 (-m64)

float, float _Imaginary

0xff800001

float _Complex

0xff80000fff800011

double

SPARC: 0xfff00003ff800005

x86: 0xfff00005ff800003

double _Imaginary

0xfff00013ff800015

long double, long double _Imaginary

SPARC: 0xffff0007ff800009 / 0xfff0000bff80000d

x86: 12 bytes (-m32): 0x80000009ff800005 / 0x0000ffff

x86 - 16 bytes (-m64): 0x80000009ff800005 / 0x0000ffff00000000

double _Complex

0xfff00013ff800015 / 0xfff00017ff800019

long double _Complex

SPARC: 0xffff001bff80001d / 0xfff0001fff800021 / 0xffff0023ff800025 / 0xfff00027ff800029

x86 - 12 bytes (-m32): 0x7fffb01bff80001d / 0x00007fff / 0x7fffb023ff800025 / 0x00007fff

x86 - 16 bytes (-m64): 0x00007fff00080000 / 0x1b1d1f2100000000 / 0x00007fff00080000 / 0x2927252300000000

計算された goto で使用するために宣言されたローカル変数 (単純な void * ポインタ) は、上の表に示されたポインタの説明に従って初期化されます。

ローカル変数の型である修飾された constregister、計算された goto のラベル番号、ローカルラベル、可変長配列 (VLA) は初期化されません。

構造体、共用体、配列の初期化

基本型である struct のフィールドは、union の最初に宣言された pointer または float フィールドのように、上の表で説明されているとおりに初期化されます。この結果、未初期化の参照により目に見えるエラーが生成される可能性が最大になります。

配列要素も上の表で説明されているとおりに初期化されます。

入れ子の structunion、配列フィールドは、ビットフィールドを含む structpointer または float フィールドのない union、または完全に初期化できない型の配列を除いて、上で説明されているとおりに初期化されます。これらは、double 型のローカル変数に使用される値を使用して初期化されます。可変長配列は初期化されません。