コンパイル時に変更しない、文字通りの、文字列と数字とブール値。
直定数は、数か、文字の文字列か、ブールの値の文字列で、ソースコードで直接指定されます。
直定数の値は、それを変数や定数に割り当てたり、手続きに渡したり、または、式の中に入れて、使われます。
数字直定数は、整数と浮動小数点の、2つの形式があります。
整数直定数
10進数
10進数で使われる数字 (
0 1 2 3 4 5 6 7 8 9 ).
注意:
負の数にするには、"-" 符号 (演算子 - (Negate)) を、数字直定数の前に置きます。
Dim x As Integer = 123456
Dim b As Byte = -128
16進数
"&H" の後ろに、16進数の桁の文字を続けます ( 0 1 2 3 4 5 6 7 8 9 A B C D E F ).
Dim x As Integer = &h1E240
Dim b As Byte = &H80
8進数
"
&O" ( O は、"Octal" の頭文字。又は "
&") の後ろに、8進数の数字を続けます (
0 1 2 3 4 5 6 7 )
Dim x As Integer = &O361100
Dim b As Byte = &O200
2進数
"&B" の後ろに、2進数の数字を続けます ( 0 1 )
Dim x As Integer = &B11110001001000000
Dim b As Byte = &B10000000
整数サイズ接尾語
整数直定数接尾語を与えないと、直定数を保持するのに必要な数字項目のサイズは、自動的に計算されます。
サイズ接尾語を指定すると、コンパイラは、数字が、特定の整数サイズであるとみなします。
整数直定数の後ろに付ける文字と意味:
- "%" は、符号付き 32/64 (プラットフォームに依存) ビットの整数とみなされます。(Integer)
-
"L", "&" は、符号付き32ビットの整数とみなされます。
(Long)
- "U" は、符号無し 32/64 (プラットフォームに依存) ビットの整数とみなされます。(Uinteger)
-
"UL" は、符号無し32ビットの整数とみなされます。
(Ulong)
-
"LL" は、符号付き64ビットの整数とみなされます。
(Longint)
-
"ULL" は、符号無し64ビットの整数とみなされます。
(Ulongint)
数値リテラルの前に付けるマイナス (-) およびプラス (+) の記号は、数値リテラルの一部ではありません。
式("
-1L" など)は、正のリテラル("
1L")で表される値に適用される否定演算子として解析されます。
これには暗黙の型変換が含まれる場合があります。
明示的な "
+" 符号が整数リテラルの前にある場合と同じ動作です。
接頭語、接尾語、および16進数文字桁は、すべて大文字と小文字を区別しません。
Dim a As Long = 123L
Dim b As UInteger = &h1234u
Dim c As LongInt = 76543LL
Dim d As ULongInt = &b1010101ULL
浮動小数点直定数
浮動小数点数は、十進数桁で指定されています。浮動小数点数は、正数と負数があります。小数部分があり、オプションで指数があります。
浮動小数点直定数の形式は、以下の通りです(空白や括弧は追加されません):
number[.[fraction]][(D|E)[+|-][exponent]][suffix]
または
.fraction[(D|E)[+|-][exponent]][suffix]
デフォルトで、指数か接尾語のいずれかを持っていない浮動小数は、倍精度浮動小数値とみなされます。
-lang qb 方言では、7ケタ以下の数は、単精度とみなされます。
Dim a As Double = 123.456
Dim b As Double = -123.0
数/小数部の後の "D" か "E" の文字は、この数が、指数として与えられていることを意味します。
指数は、正数か負数かを、プラス ("+") かマイナス ("-") 符号で、指定できます。
符号を持っていない指数は、正数です。
指数値は、文字の後(または記号の後)に必要ないので、文字を、自身の型を指定するためだけに使えます。
"D" は、倍精度浮動小数点の数を指定します。
"E" は、デフォルトの精度を使って、浮動小数点の数を指定します。
文字が、接尾辞と組み合わせて使われる場合(以下を参照)、接尾辞で示される型は、文字で指定される型より優先されます。
Dim a As Double = -123.0d
Dim b As Double = -123e
Dim c As Double = 743.1e+13
Dim d As Double = 743.1D-13
Dim e As Double = 743.1E13
Dim f As Single = 743D!
数値に、接尾辞 "!" か "F" を指定すると、単精度(合計32ビット)浮動小数点値が指定されます。
接尾辞 "#" または "D" は、倍精度浮動小数点数を指定します。
接尾語の文字と指数指定子は、大文字と小文字を区別しないことに、注意してください。
Dim a As Single = 3.1!
Dim b As Single = -123.456e-7f
Dim c As Double = 0#
Dim d As Double = 3.141592653589e3#
文字列直定数
文字列直定数は、文字の並びで、2つの二重引用符の間に挟まれます。
文字の並びは、エスケープと、非エスケープがあります。
二重引用符は、文字列直定数の指定で、2つの二重引用符を一緒に使う必要があります。
Print "Hello World!"
Print "That's right!"
Print "この ""単語"" が二重の引用符で囲まれていることに注意して下さい。"
Print !"Hello\nWorld!"
デフォルトで、文字列直定数は、非エスケープです。
Option Escape をソースで使うと、以降のすべての文字列直定数は、デフォルトでエスケープになります。
文字列は、
$ operator (Non-Escaped String Literal) を前に置いて、明示的に非エスケープに指定することができます。
Print $"C:\temp"
Unicode のエスケープ文字 (
\u) を持つ ASCII ファイル以外に、FreeBASIC は、ソースファイルが Byte Order Mark (BOM)付きで保存されている限り、UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE を扱えます。そして、文字列直定数に Unicode 文字を直接入れることができます。
一般に UTF-8 は BOM 無しも許されますが、FreeBASIC では UTF-8 として認識するために BOM が必要であることに注意して下さい。
注:最も信頼性の高いクロスプラットフォームコードは、ASCII/UTF-8 文字で BOM なしでエンコードすることで得られます。
ASCII ファイルの文字列直定数は、
ZString として扱われ、Unicode ファイルの文字列直定数は(文字列直定数の値にかかわらず)
WString として扱われます。
ブール直定数
Dim a As Boolean = False
Dim b As Boolean = True
参照: