「型」の版間の差分

提供: AB開発Wiki
ナビゲーションに移動検索に移動
(ライブラリで定義される型の節を追加)
1行目: 1行目:
 
== 型の種類 ==
 
== 型の種類 ==
* 基本型
+
; 基本型
:: コンパイラが直接的に理解できる型のことを言います。詳細は基本型一覧をご覧ください。
+
: コンパイラが直接的に理解できる型のことを言います。詳細は基本型一覧をご覧ください。
* クラス
+
; クラス
:: Classステートメントで定義される型です。
+
: Classステートメントで定義される型です。
* 構造体
+
; 構造体
:: Typeステートメントで定義される型です。
+
: Typeステートメントで定義される型です。
* 列挙体
+
; 列挙体
:: Enumステートメントで定義される型です。
+
: Enumステートメントで定義される型です。
* デリゲート
+
; デリゲート
:: Delegateステートメントで定義される型です。
+
: 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 ====
ABでは、他のBasic言語ではあまり見ることのないポインタ型の扱いに対応しています。メモリ内部を詳細に指定できるポインタ機能、ハードに近いレベルでの利用が可能ですが、使い方によってはバグを引き起こす原因にもなります。必要なときは最新の注意を払って利用していくのが望ましいでしょう。
+
SIZE_Tの符号有り版で、現在LONG_PTRからTypeDefされています。
Win32APIを直接的に利用する場合などに利用を留めておきましょう。
 
 
 
==== VoidPtr ====
 
どのようなオブジェクトを指し示すこともできるポインタ型です。Win32 (x86)の環境では4 byte、Win64 (x64)の環境では8 byteです。
 
  
==== その他オブジェクトへのポインタ型 ====
+
=== ポインタ型 ===
型名に*を前置すると、その型を指し示すポインタ型を意味します。例: *Byte, *String
+
次の型がそれぞれ定義されています。
/* とりあえずオブジェクトという言葉を用いましたがほかに適切なものはあるでしょうか。*/
+
==== 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>
  
==== 関数へのポインタ型 ====
+
=== 文字型 ===
関数宣言に*を前置すると、その関数を指し示すポインタ型を意味します。例: *Sub(x As Double), *Function(ptr As VoidPtr) As DWord。詳しくは[[関数#関数ポインタ]]を参照してください。
+
==== 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が管理します。