「型」の版間の差分
編集の要約なし |
(ライブラリで定義される型の節を追加) |
||
1行目: | 1行目: | ||
== 型の種類 == | == 型の種類 == | ||
; 基本型 | |||
: コンパイラが直接的に理解できる型のことを言います。詳細は基本型一覧をご覧ください。 | |||
; クラス | |||
: Classステートメントで定義される型です。 | |||
; 構造体 | |||
: Typeステートメントで定義される型です。 | |||
; 列挙体 | |||
: Enumステートメントで定義される型です。 | |||
; デリゲート | |||
: Delegateステートメントで定義される型です。 | |||
131行目: | 131行目: | ||
:: ※内部表現は True = 1、False = 0 となります。比較演算の戻り値はBoolean型です。 | :: ※内部表現は True = 1、False = 0 となります。比較演算の戻り値はBoolean型です。 | ||
=== ポインタ型 === | |||
ABでは、他のBasic言語ではあまり見ることのないポインタ型の扱いに対応しています。メモリ内部を詳細に指定できるポインタ機能、ハードに近いレベルでの利用が可能ですが、使い方によってはバグを引き起こす原因にもなります。必要なときは最新の注意を払って利用していくのが望ましいでしょう。 | |||
Win32APIを直接的に利用する場合などに利用を留めておきましょう。 | |||
==== VoidPtr ==== | |||
どのようなオブジェクトを指し示すこともできるポインタ型です。Win32 (x86)の環境では4 byte、Win64 (x64)の環境では8 byteです。 | |||
==== その他オブジェクトへのポインタ型 ==== | |||
型名に*を前置すると、その型を指し示すポインタ型を意味します。例: *Byte, *String | |||
==== 関数へのポインタ型 ==== | |||
関数宣言に*を前置すると、その関数を指し示すポインタ型を意味します。例: *Sub(x As Double), *Function(ptr As VoidPtr) As DWord。詳しくは[[関数#関数ポインタ]]を参照してください。 | |||
== ライブラリで定義される型 == | |||
これらの型は全てインクルードファイルの中でTypeDefによって定義されています。 | |||
=== プラットフォームによって異なるサイズを持つ型 === | === プラットフォームによって異なるサイズを持つ型 === | ||
136行目: | 152行目: | ||
==== LONG_PTR ==== | ==== LONG_PTR ==== | ||
Win32 (x86)の環境ではLong型として認識されます。Win64 (x64)の環境ではInt64型として認識されます。 | Win32 (x86)の環境ではLong型として認識されます。Win64 (x64)の環境ではInt64型として認識されます。 | ||
==== ULONG_PTR ==== | ==== ULONG_PTR ==== | ||
Win32 (x86)の環境ではDWord型として認識されます。Win64 (x64)の環境ではQWord型として認識されます。 | Win32 (x86)の環境ではDWord型として認識されます。Win64 (x64)の環境ではQWord型として認識されます。 | ||
==== SIZE_T ==== | |||
SIZE_Tはメモリの大きさを表す符号無し整数型で、現在ULONG_PTRからTypeDefされています。 | |||
== | ==== SSIZE_T ==== | ||
SIZE_Tの符号有り版で、現在LONG_PTRからTypeDefされています。 | |||
==== | === ポインタ型 === | ||
次の型がそれぞれ定義されています。 | |||
/* | ==== BytePtr ==== | ||
<nowiki>*ByteからのTypeDef</nowiki> | |||
==== WordPtr ==== | |||
<nowiki>*WordからのTypeDef</nowiki> | |||
==== DWordPtr ==== | |||
<nowiki>*DWordからのTypeDef</nowiki> | |||
==== SinglePtr ==== | |||
<nowiki>*SingleからのTypeDef</nowiki> | |||
==== DoublePtr ==== | |||
<nowiki>*DoubleからのTypeDef</nowiki> | |||
==== | === 文字型 === | ||
==== StrChar ==== | |||
[[String クラス]]の要素に使われる文字型です。Charとは別個にUnicodeとマルチバイトの切り替えが行われます。 | |||
==== WCHAR ==== | |||
WCHARは常にUnicode (UCS-2)文字を保持する2バイトの型です。 | |||
== 値型と参照型 == | == 値型と参照型 == | ||
ABでは、基本型及び構造体は値型として扱います。値型はローカル領域またはグローバル領域に配置され、インスタンスの生存期間はスコープレベルで決まります。 | ABでは、基本型及び構造体は値型として扱います。値型はローカル領域またはグローバル領域に配置され、インスタンスの生存期間はスコープレベルで決まります。 | ||
クラス型・Enum型・デリゲート型は参照型です。これらの実態はヒープ領域に確保されます。インスタンスの生存期間はGCが管理します。 | クラス型・Enum型・デリゲート型は参照型です。これらの実態はヒープ領域に確保されます。インスタンスの生存期間はGCが管理します。 |
2007年3月9日 (金) 07:39時点における版
型の種類
- 基本型
- コンパイラが直接的に理解できる型のことを言います。詳細は基本型一覧をご覧ください。
- クラス
- Classステートメントで定義される型です。
- 構造体
- Typeステートメントで定義される型です。
- 列挙体
- Enumステートメントで定義される型です。
- デリゲート
- Delegateステートメントで定義される型です。
基本型一覧
基本型とはコンパイラが直接的に認識できるデータの種類です。基本型は値を保持するためだけにある型ですので、オブジェクトとしての振る舞いはありません。
整数型
SByte
- 概要
- 符号あり8ビット整数型
- サイズ
- 1 byte
- 値の範囲
- -128 ~ 127
Byte
- 概要
- 符号なし8ビット整数型
- サイズ
- 1 byte
- 値の範囲
- 0 ~ 255
Integer
- 概要
- 符号あり16ビット整数型
- サイズ
- 2 byte
- 値の範囲
- -32768 ~ 32767
Word
- 概要
- 符号なし16ビット整数型
- サイズ
- 2 byte
- 値の範囲
- 0 ~ 65535
Long
- 概要
- 符号あり32ビット整数型
- サイズ
- 4 byte
- 値の範囲
- -2147483648 ~ 2147483647
DWord
- 概要
- 符号なし32ビット整数型
- サイズ
- 4 byte
- 値の範囲
- 0 ~ 4294967295
Int64
- 概要
- 符号あり64ビット整数型
- サイズ
- 8 byte
- 値の範囲
- -9223372036854775808 ~ 9223372036854775807
QWord
- 概要
- 符号なし64ビット整数型
- サイズ
- 8 byte
- 値の範囲
- 0 ~ 18446744073709551616
浮動小数点型
Single
- 概要
- 単精度浮動小数点型
- サイズ
- 4 byte
- 値の範囲
- 3.4E +/- 38 (7 桁)
Double
- 概要
- 倍精度浮動小数点型
- サイズ
- 8 byte
- 値の範囲
- 1.7E +/- 308 (15 桁)
文字型
Char
- 概要
- 一文字を表現するための型です。
- サイズ
- 1 byte(マルチバイト環境)
- 2 byte(Unicode環境)
ブーリアン
Boolean
- 概要
- 真偽値を見分けるための型
- サイズ
- 1 byte
- 値の種類
- True or False
- ※内部表現は True = 1、False = 0 となります。比較演算の戻り値はBoolean型です。
ポインタ型
ABでは、他のBasic言語ではあまり見ることのないポインタ型の扱いに対応しています。メモリ内部を詳細に指定できるポインタ機能、ハードに近いレベルでの利用が可能ですが、使い方によってはバグを引き起こす原因にもなります。必要なときは最新の注意を払って利用していくのが望ましいでしょう。 Win32APIを直接的に利用する場合などに利用を留めておきましょう。
VoidPtr
どのようなオブジェクトを指し示すこともできるポインタ型です。Win32 (x86)の環境では4 byte、Win64 (x64)の環境では8 byteです。
その他オブジェクトへのポインタ型
型名に*を前置すると、その型を指し示すポインタ型を意味します。例: *Byte, *String
関数へのポインタ型
関数宣言に*を前置すると、その関数を指し示すポインタ型を意味します。例: *Sub(x As Double), *Function(ptr As VoidPtr) As DWord。詳しくは関数#関数ポインタを参照してください。
ライブラリで定義される型
これらの型は全てインクルードファイルの中でTypeDefによって定義されています。
プラットフォームによって異なるサイズを持つ型
LONG_PTR
Win32 (x86)の環境ではLong型として認識されます。Win64 (x64)の環境ではInt64型として認識されます。
ULONG_PTR
Win32 (x86)の環境ではDWord型として認識されます。Win64 (x64)の環境ではQWord型として認識されます。
SIZE_T
SIZE_Tはメモリの大きさを表す符号無し整数型で、現在ULONG_PTRからTypeDefされています。
SSIZE_T
SIZE_Tの符号有り版で、現在LONG_PTRからTypeDefされています。
ポインタ型
次の型がそれぞれ定義されています。
BytePtr
*ByteからのTypeDef
WordPtr
*WordからのTypeDef
DWordPtr
*DWordからのTypeDef
SinglePtr
*SingleからのTypeDef
DoublePtr
*DoubleからのTypeDef
文字型
StrChar
String クラスの要素に使われる文字型です。Charとは別個にUnicodeとマルチバイトの切り替えが行われます。
WCHAR
WCHARは常にUnicode (UCS-2)文字を保持する2バイトの型です。
値型と参照型
ABでは、基本型及び構造体は値型として扱います。値型はローカル領域またはグローバル領域に配置され、インスタンスの生存期間はスコープレベルで決まります。 クラス型・Enum型・デリゲート型は参照型です。これらの実態はヒープ領域に確保されます。インスタンスの生存期間はGCが管理します。