<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>数据类型</title>
</head>
<body>
<h2 align="center">数据类型</h2>
<p> </p>
<p>变量是用来存储值的所在处;它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。所有变量都具有数据类型,以决定能够存储哪种数据。</p>
<p>根据缺省规定,如果在声明中没有说明数据类型,则令变量的数据类型为
Variant。Variant 数据类型很象一条变色龙—
它可在不同场合代表不同数据类型。当指定变量为 Variant
变量时,不必在数据类型之间进行转换,Visual Basic
会自动完成各种必要的转换。</p>
<p>但是,如果知道变量确实总是存储特定类型的数据,并且还声明了这种特定类型的变量,则
Visual Basic
会以更高的效率处理这个数据。例如,存储人名的变量最好表示成
String 数据类型,因为名字总是由字符组成。</p>
<p>除变量外,数据类型也用于其它场合。在给属性赋值时,这个值就有数据类型;函数的参数也有数据类型。事实上,在
Visual Basic 中,凡是与数据有关的东西就与数据类型有关。</p>
<p>也可声明任何基本类型的数组。</p>
<p><b>详细信息 </b>关于更详细信息,请参阅本章后面的“数组”部分。在“性能和兼容性的设计”中还将讨论通过选择数据类型来提高应用程序的性能。</p>
<h3>声明带数据类型的变量</h3>
<p>在使用非 Variant 变量之前,必须使用 Private、Public、Dim 或
Static 语句将变量声明为 As <span class="emp">type</span>。例如,下列语句分别声明了
Integer、Double、String 和 Currency 类型的变量:</p>
<pre><code>Private I As Integer
Dim Amt As Double
Static YourName As String
Public BillsPaid As Currency
</code></pre>
<p>一个声明语句可将多个声明组合起来,请看下列语句:</p>
<pre><code>Private I As Integer,Amt As Double
Private YourName As String,BillsPaid As Currency
Private Test,Amount,J As Integer
</code></pre>
<p class="indent"><b>注意 </b>如果不提供数据类型,则指定变量为缺省类型。在上例中,变量
<code>Test</code> 和 <code>Amount</code> 是 Variant
数据类型。如果由于其它编程语言的经验使人感到同一个声明语句中的所有变量都有相同的指定数据类型(此例中为
Integer),那么,此处的结果可能会令人感到新鲜。</p>
<h3>Numeric 数据类型</h3>
<p>Visual Basic 支持几种 Numeric 数据类型— Integer(整型)、Long(长整型)、Single(单精度浮点型)、Double(双精度浮点型)和
Currency(货币型)。与 Variant 类型相比,Numeric
类型占用的存储空间通常要少。</p>
<p>如果知道变量总是存放整数(如 12
)而不是带小数点的数字(如 3.57),就应当将它声明为
Integer 类型或 Long
类型。整数的运算速度较快,而且比其它数据类型占据的内存要少。在
For...Next 循环内作为计数器变量使用时,整数类型尤为有用。</p>
<p><b>详细信息 </b>关于控制结构的详细资料,请参阅本章后面的“控制结构概述”。</p>
<p>如果变量包含小数,则可将它们声明为 Single、Double 或
Currency 变量。Currency 数据类型支持小数点右面 4
位和小数点左面 15
位;它是一个精确的定点数据类型,适用于货币计算。浮点(Single
和 Double)数比 Currency
的有效范围大得多,但有可能产生小的进位误差。</p>
<p class="indent"><b>注意 </b>浮点数值可表示为 <font face="Verdana"><span class="emp">mmm</span><b>E</b><span class="emp">eee</span>
</font>或 <font face="Verdana"><span class="emp">mmm</span><b>D</b><span class="emp">eee</span>
</font>,其中 <font face="Verdana"><span class="emp">mmm</span> </font>是假数,而
<font face="Verdana"><span class="emp">eee</span> </font>是指数(以 <font face="Verdana">10
</font>为底的幂)。<font face="Verdana">Single </font>数据类型的最大正数值为
<font face="Verdana">3.402823E+38</font>,或 <font face="Verdana">3.4 </font>乘以
<font face="Verdana">10 </font>的 <font face="Verdana">38 </font>次方;<font face="Verdana">Double
</font>数据类型的最大正数值是 <font face="Verdana">1.79769313486232D+308
</font>或 <font face="Verdana">1.8 </font>乘以 <font face="Verdana">10 </font>的
<font face="Verdana">308 </font>次方。用 <font face="Verdana"><b>D </b></font>将数值文字中的假数部分和指数部分隔开,就会导致将该值作为
<font face="Verdana">Double </font>数据类型来处理。同样,用这种方式使用
<font face="Verdana"><b>E</b></font>,也会导致将该值作为 <font face="Verdana">Single
</font>数据类型来处理。</p>
<h3>Byte 数据类型</h3>
<p>如果变量包含二进制数,则将它声明为 Byte
数据类型的数组。(本章后面的“数组”中将讨论数组)。在转换格式期间用
Byte 变量存储二进制数据就可保留数据。当 String 变量在 ANSI
和 Unicode
格式间进行转换时,变量中的任何二进制数据都会遭到破坏。在下列任何一种情况下,Visual
Basic 都会自动在 ANSI 和 Unicode 之间进行转换:
<ul type="disc">
<li>读文件时<br>
<br>
<li>写文件时<br>
<br>
<li>调用 DLL 时<br>
<br>
<li>调用对象的方法和属性时</li>
</ul>
<p>除一元减法外,所有可对整数进行操作的运算符均可操作
Byte 数据类型。因为 Byte 是从 0 - 255
的无符号类型,所以不能表示负数。因此,在进行一元减法运算时,Visual
Basic 首先将 Byte 转换为符号整数。</p>
<p>所有数值变量都可相互赋值,也可对 Variant
类型变量赋值。 在将浮点数赋予整数之前, Visual Basic要将浮点数的小数部分四舍五入,而不是将小数部分去掉。</p>
<p><b>详细信息 </b>关于 Unicode 和 ANSI 转换的详细信息,请参阅“国际化”。</p>
<h3>String 数据类型</h3>
<p>如果变量总是包含字符串而从不包含数值,就可将其声明为
String 类型。</p>
<pre><code>Private S As String
</code></pre>
<p>然后可将字符串赋予这个变量,并用字符串函数对它进行操作。</p>
<pre><code>S = "Database"
S = Left (S,4)
</code></pre>
<p>按照缺省规定,String 变量或参数是一个<span class="emp">可变长度的字符串</span>,随着对字符串赋予新数据,它的长度可增可减。
也可以声明字符串具有固定长度。可用以下语法声明一个<span class="emp">定长字符串</span>:</p>
<p><b>String</b><span class="emp"> * size</span></p>
<p>例如,为了声明一个长度为 50
字符的字符串,可用下列语句:</p>
<pre><code>Dim EmpName As String * 50
</code></pre>
<p>如果赋予字符串的字符少于 50 个,则用空格将 <code>EmpName</code>
的不足部分填满。如果赋予字符串的长度太长,已不能成为定长字符串,则
Visual Basic 会直接截去超出部分的字符。</p>
<p>因为定长字符串用空格填充尾部多余的空间,所以在处理定长字符串时可发现,删除空格的
Trim 和 RTrim 函数是很有用的。</p>
<p>可将标准模块中的定长字符串声明为 Public 或 Private。在窗体和类模块中,必须将定长字符串声明为
Private。</p>
<p><b>详细信息 </b>请参阅语言参考中的“Ltrim、RTrim Function 和
Trim 函数”。</p>
<h3>交换字符串和数字</h3>
<p>如果字符串表示数值,则可将字符串赋予数值变量。也可将数值赋予字符串变量。例如,将命令按钮、文本框和列表框放置在窗体中。在命令按钮的
Click 事件中输入下列代码。运行应用程序并单击命令按钮。</p>
<pre><code>Private Sub Command1_Click ()
Dim intX As Integer
Dim strY As String
strY = "100.23"
intX = strY '</code>将字符串传递给数值变量。
<code>List1.AddItem Cos (strY) '</code>将字符串中数值的余弦值。
<code>'</code>添加到列表框中。
<code>strY = Cos (strY) '</code>将余弦值传递给字符串变量。
<code>Text1.Text = strY '</code>在文本框中显示字符串。
<code>End Sub</code>
</pre>
<p> Visual Basic
会自动强制变量为适当的数据类型。在转换字符串和数值时要小心;如果传送字符串中的值不是数值,则在运行时会出错。</p>
<h3>Boolean 数据类型</h3>
<p>若变量的值只是“true/false”、“yes/no”、“on/off”信息,则可将它声明为
Boolean 类型。Boolean 的缺省值为 False。在下面的例子中,<code>blnRunning</code>
是 Boolean 变量,存储简单的 yes/no 设置。</p>
<pre><code>Dim blnRunning As Boolean
'</code>查看磁带是否在转。
<code>If Recorder.Direction = 1 Then </code>
<code> blnRunning = True</code>
<code>End if</code>
</pre>
<h3>Date 数据类型</h3>
<p>Date 和 Time 值既可包含在特定的 Date
数据类型中,又可包含在 Variant 变量中。一般的 Date
特性适用于这两种类型。</p>
<p><b>详细信息 </b>请参阅《联机手册》的“高级变量主题”中的“在
Variant 变量中存储 Date/Time 值”部分。</p>
<p>当其它数值数据类型转换为 Date 时,小数点左边的值表示
Date 信息,小数点右边的值则代表 Time。午夜为 0,正午为 0.5。负数表示公元
1899 年 12 月 31 日之前的 Date。</p>
<h3>Object 数据类
评论0