当前位置:文档之家› lABVIEW关于数据类型的编辑:数组、簇和波形

lABVIEW关于数据类型的编辑:数组、簇和波形

lABVIEW关于数据类型的编辑:数组、簇和波形
lABVIEW关于数据类型的编辑:数组、簇和波形

数据类型:数组、簇和波形

.1概述

数组是同类型元素的集合。一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。可以通过数组索引访问其中的每个元素。索引的范围是0到n – 1,其中n是数组中元素的个数。图3-1所显示的是由数值构成的一维数组。注意第一个元素的索引号为0,第二个是1,依此类推。数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。

图3-1数组示意图

簇(Cluster)是另一种数据类型,它的元素可以是不同类

型的数据。它类似于C语言中的stuct。使用簇可以把分布在流

程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤

程度。减少子VI的连接端子的数量。

波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。

3.2数组的创建及自动索引

3.2.1创建数组

一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(如果需要用一个数组作为程序的数据源,可以选择Functions?Array?Array Constant,将它放置在流程图中。然后再在数组框中放置数值常量、布尔数还是字符串常量。下图显示了在数组框放入字符串常量数组的例子。左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素均为空。

图3-1数组的创建

在前面板中创建数组的方法是,从Controls模板中选择

Array & Cluster,把数组放置在前面板中,然后选择一个对象

(例如数值常量)插入到数组框中。这样就创建了一个数值数组。

也可以直接在前面板中创建数组和相应的控制对象,然它们

复制或者拖曳到流程图中,创建对应的常数。

还有很多在流程图中创建和初始化数组的方法,有些功能函

数也可以生成数组。

3.2.2数组控制对象、常数对象和显示对象

通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。数组元素不能是数组、图表或者图形。如果您想查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。

3.2.3自动索引

For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。这些功能称为自动索引。在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。

在默认情况下,对于每个连接到For循环的数组都会执行自

动索引功能。可以禁止这个功能的执行,方法是用鼠标右键单击

通道(输入数组进入循环的位置),在快捷菜单中选择Disable

Indexing。

练习3-1创建一个自动索引的数组

目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。

前面板

图3-2练习3-1的面板

1.打开一个新的前面板。

2.选择Controls?Array & Cluster,在前面板

中放置一个数组。设置它的标签为Waveform Array。

3.选择Controls?Numeric,在

数组框中插入一个数字式显示对象。

如右图所示。它用于显示数组的内容。

4.选择Controls?Graph,在前

面板中放置一个波形图。设置它的标

签为Waveform Graph。

5.隐藏图例和模板。

6.用鼠标右键单击图形,并在快捷菜单中取消选中Y

Scale?Autoscale Y,禁止自动坐标功能。

7.使用文本工具,把Y轴的范围改为-0.5到1.5。

流程图

8.按照下图创建流程图。

图3-2练习3-1的流程图

●由Functions?Select a VI…寻找

LabVIEW\activity目录下的Generate Waveform

VI,它的作用是返回波形中的某一点。这个VI

需要输入一个索引,我们将循环周期连接到这个

输入。

●注意Generate Waveform VI连出来的连线在循环边界

变成一个数组时会变粗,正是在这个边界处形成了一维数组。

●For循环会自动累计边界内的数组。这种功能叫做自动

索引。在这个例子中,连接到循环计数输入的数值常数令For

循环创建了一个由100个元素组成的数组。

●Bundle函数(Functions? Cluster)——

将图块中的各个组件组合成一个簇,在正确连接以

前需要改变该函数的图标的大小。将移位工具放在

图标的左下角。变形工具会变成如左图所示,拖曳鼠标直到出现

第三个输入端子。

●数值常数(Functions?Numeric)——三个数值常数用

于设置For循环执行的周期数N=100,初始X=0和delta X=1。

9.从前面板执行该VI。该VI将把自动索引后的波形图数

组显示在波形图中。

10.把 X的delta值改为0.5,X的初始值改为20。再次执

行该VI。注意,波形图现在同样显示100个点,而每个点的初

始值为20,X的delta值为0.5(见X轴)。

11.只需在显示器中输入元素的索引号就可以查看波形数

组中的任何元素。如果输入的数比数组的元素个数大,那么显示

器将变暗,表示您没有为该元素设置索引。

如果需要一次查看多个元素,可以通过改变数组显

示对象的大小来实现。把定位工具放置在数组框的右下

角。工具将变成右图所示的变形工具。当工具变形时,用鼠标拖

曳数组的右边或者下边。数组现在就可以按照元素索引的上升顺

序显示多个素,以某个与指定索引对应的元素开始,如下图所示。

图3-3练习3-1中多个数组元素的同时观察

在前面的流程图中,您为波形图指定了初始的X值和delta

X值。默认的X初始值是0,delta X 值是1。这样,也可以把

波形数组直接连接到波形图端子,而无需指定初始的X值和

delta X值,如图3-4所示。

图3-4练习3-1使用默认X及Delta X时简化后的流程图

12.按上图删除 Bundle功能函数和它所连接的常数对象。

方法是用移位工具选择该功能函数和连接的常数对象,按下

。再选择Edit?Remove Bad Wire s。按照上图完成流程

图的连线。

13.执行该VI。注意初始的X值是0,delta X值是1。

多图区图形

可以创建含有多条曲线的图形,方法是创建一个数组,用它

来汇集传给单图区图形的类型的数据元素。

图3-5 练习3-1多图区图形的流程图

14. 按照上图创建流程图。

● 正弦函数

(Functions?Numeric?Trigonometric )——在这

里,它用于在For 循环中创建一个由数据点组成的数组,表示一

个正弦波周期。

● Pi 常数(Functions?Numeric?Additional

Numeric Constants )

● Build Array (Functions?Arra y )——在

这里,它用于创建合适的数据结构(一个二维数组),

在波形图中绘制两条曲线。。用移位工具拖曳边角

可以增大该函数的面积,创建两个输入端子。

15. 返回前面板,执行该 VI 。注意同一个波形中的两个图

区。默认情况下,它们的X 初始值都是0,delta X 初始值都是

1。下图是该程序的运行结果(前面板未改动)。

16. 把该VI 保存为LabVIEW\Activity 目录中的Graph

Waveform Arrays.vi 。

17. 可以修改图形中的某个图区的外观。方法是,用鼠标右

键单击这个图形,再从弹出菜单选择对应的图例。

Array

图3-6 练习3-1多图区图形的面板显示

练习 3-1 结束。

在上面这个例子中,由于计算端子连接了一个值为100的常

数对象,所以 For 循环将执行100次。下面这个例子显示了另

外一种控制循环执行次数的方法。

更详细的例子建议调阅Examples 》Fundamentals 》Graphs

and Charts 》Graph Examples 》Waveform Graph 例子。

练习 3-2 对输入数组使用自动索引功能

目的:打开并执行一个VI ,它将在一个For 循环中使用自动索引功能处理一个数组。

1. 选择File?Open …,打开

Examples\General\arrays.llb 中的Separate Array Values

VI 。

2.打开流程图。下面的示意图显示的是在TRUE和FALSE

时的情况。

图3-7练习3-2的流程图

注意,Input Array引出的连线与For循环外的粗线不同,

表示这是一个数组,而循环内部的细线则表示这是一个数组元

素。数组元素在每个循环期间将自动编号。

用自动索引功能设置 For 循环的计数器

注意,计数器端子还没有连线。当您对某个进入For

循环的数组使用自动索引功能时,循环就将根据数组的大小执行

相应的次数,这样就无需连接某个值到计数器的端口。如果对一

个以上的数组使用自动索引功能,或者在使用自动索引功能之外

还需要设置计数器时,实际的循环次数将是其中最小的数。

3.执行该VI。在输入的八个数中,可以看到4个属于正

数数组,另外4个属于负数数组。

4.从流程图中将一个值为5的常数对象连接到For 循环

的计数器端子。执行该 VI。可以看到尽管输入数组仍然有八个

元素,但是3个位于正数数组,另外2个位于负数数组。这说明,

如果设置了N并开启了自动索引功能,那么实际循环的次数将取

较小的数。

5.关闭该VI,不要保存任何修改。

注:练习3-2的算法说明

下面是一段伪代码,解释上面的算法,假定输入数组为A(已

赋值),B(正数)、C(负数)。Sbr 、Scr分别是与B数组、

C数组对应的右寄存器数组,Sbl 、Scl分别是与B数组、C数

组对应的左寄存器数组,size运算为测数组实际大小,ins运算

为将一个数插入数组中最左边的空位。

练习3-2结束。

3.3数组功能函数

LabVIEW提供了很多用于操作数组的功能函数,位于

Functions?Array中。其中包括Replace Array Element,、Search 1D

Array、Sort 1D Array、Reverse 1D Array和Multiply Array

Elements等等。

创建数组——Build Array函数(Functions?Array),用于根据标量值或者其他的数组创建一个数组。

开始时,Build Array函数具有一个标量输入端子。您可以根据需要向该功能函数中加入任意数量的输入,输入可以是标量或者数组。如果要添加其他的输入,用鼠标单击函数的左侧,在弹出菜单中选择Add Element Input或者Add Array Input。还可以用变形工具来增大节点的面积(把移位工具放置在某个对象的边角就会变成变形光标)。也可以使用变形光标或者选择Remove Input来删除输入。

下图显示了利用流程图中的常数对象的值创建和初始化数组的两种方法。左侧的方法是,将5个字符串常数放入一个一维字符串数组中。右侧的方法是,将三组数值常数放入三个一维数值数组,再将这三个数组组成一个二维数组。这样最后产生的是一个3x3的数组,

三列分别是3, 4, 7; –1, 6, 2; 5, –2, 8.。

还可以通过结合其他的含有标量元素的数组来创建数组。例如,假设有两个数组,三个标量元素,可把它们组成一个新的数组,顺序是:数组1,标量1,标量2,数组2,标量3。

●初始化数组(Initialize Array)——用于创建所有元素值都相等的数组。下图

中,该功能函数创建了一个一维数组。

元素输入端子决定每个元素的数据类型和数值,维长度输入端子决定数组的长度,例如,假设元素类型是长整型,值为5,维长度为100,那么创建的数组是一个一维的、由100个值为5的长整型元素组成的数组。也可以从前面板控制端子、流程图常数或者程序其他部分的计算结果得到输入。

创建和初始化一个多维数组的方法是,用鼠标右键单击函数的右下侧,在弹出菜单中选择Add Dimension。还可以使用变形光标来增大初始化数组节点的面积,为每个增加的维添加一个维长度输入端子。也可以通过缩小节点的方法来删除维,即从函数的弹出菜单中选择Remove Dimension,或者使用变形光标。下面的示意图显示了怎样初始化一个三维数组。

如果所有的维长度输入都是0,该函数会创建一个具有指定数据类型和维数的空数组。

●数组大小——Array Size函数,返回输入数组中的元素个数。

●数组子集(Array Subset)——选取数组或者矩阵的某个部分。

该函数可以返回从某个指针开始的部分数组,并包括了长度元素。下图显示了一些数组子集的例子,注意,数组索引从0开始。

●索引数组(Index Array)——用于访问数组中的某个元素。

下图显示了一个索引函数的例子,它用于访问数组中的第三个元素。注意,因为第一个元素的索引为0,所以第三个元素的索引是2。

将一个二维数组与Index Array函数相连,Index Array就会含2个索引端子。将一个三维数组与Index Array函数相连,Index Array就会含3个索引端子。余类推。可以使用的索引端的符号是一个黑方快,被禁止使用的索引端(Disable Indexing)是一个空心的小方框。当给一个被禁止使用的索引端连接上一个Constant 或Control是它会自动变为黑方快,即变为可以索引,相反原来一个可以使用的索引端上连接的Constant 或Control被删去时,索引端符号会自动变为空心的小方框,即变为禁止使用。

也可以按照任何维的组合提取子数组,下面的示意图显示了怎样从一个二维数组中提取一个一维的行或者列数组。

还可以从一个三维数组中提取一个二维数组,方法是禁止两个索引端子,或者通过禁止一个索引端子提取一个一维数组。下图显示了从三维数组提取数组的各种方法。

下面的规则对使用剪切数组进行了规定:

输出对象的维数必须等于被禁止的索引端口的数目。例如

0个索引端口被禁止=标量元素

1个索引端口被禁止=二维元素

2个索引端口被禁止=三维元素

启动的端子所连接的数值必须指定输出元素。

这样,您就可以理解,上图中左下方的例子的作用是,利用0列和3行的所有元素产生一个一维数组,而右上方的例子的作用是利用第一帧中的所有元素产生一个二维数组。新的第0个元素是与原有元素最近的元素。

练习3-3使用创建数组功能函数

目的:使用创建数组函数,把一些元素和输出组织成一个更大的数组。

图3-8练习3-3的面板和框图

1.按照图3-8创建一个前面板。

2.从Controls?Numeric模板中选择一个数字控制对象放

置在前面板中,设置它的标签为scalar 1。

3.复制并粘贴该数字显示对象,创建两个新的对象,并分

别设置它们的标签为scalar 2和scalar 3。

4.创建一个数字控制对象的数组,设置它的标签为array

1。复制并粘贴它,创建一个新的数组,设置它的标签为array 2。

5.在array 1、scalar 1、 scalar 2、scalar 3、array

2中输入数值1到9。

6.创建流程图。选择Functions?Array,在流程图中放置

一个Build Array功能函数。用定位工具增大函数额面积,以容

纳5个输入。

7.把数组和标量与Build Array连接起来。创建输出的一

维数组,它由 array 1、scalar 1、 scalar 2、array 2、scalar

3中的元素所组成,如图所示。

8.执行该VI。可以看到array 1、scalar 1、 scalar 2、

scalar 3、array 2中的数值出现在同一个一维数组中。

9.保存该VI为LabVIEW\Activity目录下的Build

Array.vi。

练习3-3结束。

3.4什么是多态化(Polymorphism)?

多态化是指一种函数功能,即可以协调不同格式、维数或者

显示的输入数据。大多数LabVIEW的函数都是多态化的。例如,

图3-9给出了Add函数的一些多态化组合。

图3-9多态化组合的例子

第一个组合中,两个标量相加,结果还是一个标量。第二个

组合中,该标量与数组中的每个元素相加,结果是一个数组。数

组是数据的集合。第三个组合中,一个数组的每个元素被加到另

一个数组的对应元素中。您还可以使用其他的组合,例如数值簇

或者簇数组。

可以把这些准则应用到其他的G语言函数或者数据类型。G

语言函数对于各种情况都具有多态性功能。有些函数接受数值和

布尔输入,而有些函数接受其他任何数据格式的组合。如果您想

了解更多关于多态化的知识,请参阅Online

Reference?Function and VI Reference。

3.5簇

3.5.1创建簇控制和显示

在前面板上放置一个簇壳(Cluster shell)就创建了一个簇。

然后你可以将前面板上的任何对象放在簇中。例如数组,你也

可以直接从Control 工具板上直接拖取对象堆放到簇中。一个簇

中的对象必须全部是Control,或全是Indicator,不能在同一个

簇中组合Control与Indicator,因为簇本身的属性必须是其中之

一。一个簇将是Control或Indicator,取决于其内的第一个对象

的状态。如果需要可以使用工具重置簇的大小。右图所示是一

个含4个Control的簇。也可以在流程图上用类似的方法创建簇

常数。

如果你要求簇严格地符合簇内对象的大小,可在簇的边界上弹出快速菜单选择自动定义大小(Autosizing)

簇的序(Order)

簇的元素有一个序,它与簇内元素的位置无关。簇内第一个元素的序为0,第二个是1,等等。如果你删除了一个元素,序号将自动调整。如果你想将一个簇与另一个簇连接,这两个簇的序和类型必须同一。

如果想改变簇内元素的序,可在快速菜单中选择ReOrder Controls In Claster,这时会出现一个窗口,在该窗口内可以修改序。

3.5.2使用簇与子VI传递数据

一个VI的连接窗口最大有28个端子,如果你不希望使用全部28个端子传递数据,这既烦琐又易出错。通过把控制或显示对象捆绑成一个簇的方法,仅使用一个端子就可以实现该功能。

●捆绑(Bundle)数据

Bundle功能将分散的元件集合为一个新的簇,或允许你重置

一个已有的簇中的元素。可以用位置工具拖曳其图标的右下角以

增加输入端子的个数。最终簇的序是取决于被捆绑的输入的顺序。

右图中Bundle图标中部的Claster端子用于用新元素重置原簇中的元素。

●分解(Unbundle)簇

Unbundle功能是Bundle的逆过程,它将一个簇分解为若干分

离的元件。如果你要对一个簇分解,就必须知道它的元素的个数。

LabVIEW 还提供一种可以根据元素的名字来捆绑或分解簇的方法,稍后介绍。

练习 3-4 簇

目的:学习创建簇、分解簇,再捆绑簇并且在另一个簇中显示其内容。

图3-10 练习3-4的面板和框图

1.打开前面板,创建一个簇壳(Array & Cluster palette ),标签改为Input Cluster ,拖曳至

适当大小。

2.在这个簇壳中放置一个数字Control ,两个布尔开关,和一个串Control 。

3.仿照以上步骤,创建Output Cluster 如上。注意将各Control 改为相应的indicator 。 4.用快速菜单查看两个簇的序是否一致,若有差别,改之。

5.在前面板上设置一个[STOP]按钮。注意其缺省值为FALSE ,不要改变它的状态。

6.建立如上面所示的流程图。注意在[STOP]按钮与循环条件端子之间接入了一个NOT 函

数,因为按钮缺省值为FALSE ,经NOT 函数后变为TRUE ,这

就意味着当按钮状态不变时,循环继续执行,相反一旦按钮动作,

则循环终止。在6i 版本中这个设置可以简化,不必使用NOT 函

数,直接将[STOP]按钮与循环条件端子相连,然后用鼠标右键点

击循环条件端子,选择stop if true 即可。结果如右图所示。

7.返回前面板并运行VI 。在输入簇中输入不同的值观察输出。

8.关闭并保存程序。Cluster Exercise.vi

练习 3-4 结束

3.5.3 用名称捆绑与分解簇

有时你并不需要汇集或分解整个簇,而仅仅需要对其一、两个元素操作。这时你可以用名称来捆绑与分解簇。在Cluster 工具模板中除了Bundle 及Unbundle 功能外,还提供有Bundle By Name 和Unbundle By Name 功能。它们允许根据元素的名称(而不是其位置)来查询元素。与Bundle 不同,使用Bundle By Name 可以访问你需要的元素,但不能创建新簇;它只能重置一个已经存在的簇的元素,同时你必须给Bundle By Name 图标中间的输入端子一个输入以申明要替换其元素的簇。Unbundle 可返回指定名称的簇元素,不必考虑簇的序和大小。例如,如果你想重置上例中Boolean 2的值,就可以使用Bundle By Name 功能而不必担心簇的序和大小。与此类似如果你要访问串的值,可以使用Unbundle By Name 功能。

图3-11 用名称操作簇

在上面的例子中,Cluster Control 中有两个元素,一个是数据类型(名称是Numeric ),另一个是字符串型(名称是String ),另一个控制是字符串“ABCD ”,框图如右所示,运行该程序,即可将簇内的字符串值重置。(本例中为了使Bundle By Name 的输入端由Numeric 变为String ,需使用快速菜单中的Select Item 项操作。)

3.5.4 数组和簇的互换

有时你会发现,将数组变为簇(或者相反)很方便。尤其是因为LabVIEW 包括的关于数组的操作功能多于簇。例如,前面板上有一个多按钮的簇,你希望颠倒这些按钮值的序。好了,Reverse 1D Array 功能正好可用,但是它仅可用于数组。这没关系,你可以使用功能Cluster to Array 将簇转换为数组,使用Reverse 1D Array 切换开关的值,最后再利用Array to Claster 变换回簇。

3.6 Waveform 数据类型

在数据采集和信号分析中经常要遇到波形数据,在LabVIEW 6i 中增加了Waveform 数据类型,使得波形的描述更加简洁。Waveform 数据类型包含了波形的数据(Y)、起始时刻(t0)和步长ΔX ,使用Waveform 模板的Build Waveform 函数可以建立一个波形。许多用于数据采集和波形分析的VI 和函数的缺省状态都接受或返回Waveform 数据类型。当你将一个Waveform 数据类型连接到Waveform Graph 或Chart 时,会自动画出相应的曲线。

图3-12使用Waveform的波形发生例子

图3-12是一个使用Waveform函数产生正弦波的例子。其中仅仅调用了Sine Waveform一个函数,只要将有关参数指定,就可产生正弦波。Sine Waveform实际上是一个子VI,点击其图标,就可看到下层的程序,还是比较复杂的。在LabVIEW 6I以前的版本中用户就需要那样去编程。

Waveform数据类型是根据原有的数据类型进一步“打包”组合而成,这种打包也不可避免地带来一些负作用,有时还需要对Waveform数据类型“解包”。有关这一数据类型的函数或VI在Functions?Waveform之中。它们有:

Build Waveform :构造波形数据类型

Get Waveform Components:提取波形元素(Y,Δt,t0)

Set Waveform Attribute :设置波形属性

Get Waveform Attribute:提取Waveform属性

Waveform Operations:波形运算

Waveform Generation :波形发生

Waveform Measurements :与波形相关的测量

Waveform File I/O :Waveform格式的文件I/O

其中后4个是类目,分别还有下一层函数。现在我们具两个例子看看。

数据采集的结果通常是一个Waveform格式的数据,有时需要提取其中的Y数组,可以这样实现:

这里使用的就是Get Waveform Components函数。

在一个多通道的数据采集中,直接的输出是包含多个Waveform成分的Waveform结构,有时我们需要将它们摘开。下面是一个双通道采集的例子,我们使用Waveform Operations 下的Index Waveform Array函数,首先将它分为两个Waveform,然后再用Get Waveform Components函数提取出了各自的Y数组。

(完整word版)LabVIEW编程基础(中)

LabVIEW的基本控件与基本函数 LabVIEW基本控件:数值、布尔、字符串与路径、数组与簇、图形、枚举1、数值:数值输入控件与数值显示控件(数值输入控件有增量/减量按钮;输入为白色背 景,输出为灰色背景) 默认数据类型为:双精度,橙色。 2、布尔:值默认为False,图标为绿色。 布尔控件的机械动作属性 单击时转换:按下按钮时改变状态,再次单击后恢复原状态。与VI是否读取控件无关。(可赋值恢复)类似开关按钮 释放时转换:按下按钮时保持当前状态,直到释放按钮,再次单击后恢复原状态。与VI是否读取控件无关。(可赋值恢复)类似开关按钮 保持转换直到释放:按下按钮时改变状态,直到释放按钮,,再次单击后恢复原状态。与VI 是否读取控件无关。(可赋值恢复)。类似开关按钮 单击时触发:按下按钮时改变状态,LabVIEW再次读取控件值后返回原状态。 释放时触发::按下按钮时保持当前状态,释放时改变状态,LabVIEW再次读取控件值后返回原状态。 保持触发直到释放:按下按钮时改变状态,直到释放按钮,LabVIEW再次读取控件值后返回原状态。

3、字符串与路径:(字符串输入控件与字符串显示控件),粉色。 4种显示方式(正常显示、’\’代码显示、密码显示、十六进制显示) 4、数组:依据加入的控件类型同样分为输入控件与显示控件 LabVIEW的数组以索引号0表示数组的首个数据。 增加数组维度的方法:(1)索引框的快捷菜单中->增加维度 (2)直接向下拖动索引框 (3)属性对话框->外观选项卡->维 数组中的元素为同类型的控件,可以是各种类型的控件,但不能是数组的数组。数组的多态性: 5、簇:依据加入的控件类型同样分为输入控件与显示控件 簇本身的属性:重新排序簇中控件、自动调整大小(无、调整为匹配大小、水平排列、垂直排列) 使用簇结构时,尽可能的使用:严格自定义类型。 错误簇:状态(布尔)、代码(数值输入)、源(字符串输入)

常用数据类型转换使用详解

VC常用数据类型使用转换详解 CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。 CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。typedef OLECHAR FAR* BSTR; typedef const char * LPCTSTR; vc++中各种字符串的表示法 首先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容。 LP的含义是长指针(long pointer)。LPSTR是一个指向以‘/0’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR。 而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数据类型的实例不能被使用它的API函数改变,除此之外,它与LPSTR是等同的。 1.LP表示长指针,在win16下有长指针(LP)和短指针(P)的区别,而在win32下是没有区别的,都是32位.所以这里的LP和P是等价的. 2.C表示const 3.T是什么东西呢,我们知道TCHAR在采用Unicode方式编译时是wchar_t,在普通时编译成char. 为了满足程序代码国际化的需要,业界推出了Unicode标准,它提供了一种简单和一致的表达字符串的方法,所有字符中的字节都是16位的值,其数量也可以满足差不多世界上所有书面语言字符的编码需求,开发程序时使用Unicode(类型为wchar_t)是一种被鼓励的做法。 LPWSTR与LPCWSTR由此产生,它们的含义类似于LPSTR与LPCSTR,只是字符数据是16位的wchar_t而不是char。 然后为了实现两种编码的通用,提出了TCHAR的定义: 如果定义_UNICODE,声明如下: typedef wchar_t TCHAR; 如果没有定义_UNICODE,则声明如下: typedef char TCHAR; LPTSTR和LPCTSTR中的含义就是每个字符是这样的TCHAR。 CString类中的字符就是被声明为TCHAR类型的,它提供了一个封装好的类供用户方便地使用。

LabVIEW中的数组操作函数

L a b V I E W中的数组操作 函数 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

LabVIEW中的数组操作函数 现在我们已经了解了中的的一些基本概念(包括了前面这几篇文章、、)。在这篇文章里面我们接着讨论一下如何操作数组了。在的Functions(函数)工具框的Programming>>Array子工具框中有很多操作数组的函数。(我们在使用数组的时候要记住中的数组元素的索引是从0开始的,也就是说它的第一个元素的索引为0,第二个元素的索引为1,以此类推。)我们将在这里讲解常用的数组操作函数,LabVIEW中数组函数的工具框如下图所示: ?初始化数组函数将创建并按照你设定的值来初始化N维数组。通过将光标置于该函数最下方边框,出现拖动光标后向下拖动就可以为该数组增加维数。该函数适用于为已知大小的数组分配内存或者是初始化数组类型数据的。 该函数如下图所示: ?数组大小函数会返回输入数组的元素的个数。如果输入的数组为N维的多维数组,该函数就会返回有N个元素的一维数组,每个元素按顺序对应每维的元素的个数。该函数如下图所示: ? ?创建数组函数(BuildArray)可以根据你的设置来将两个数组连接或合成为一个数组以及为现有数组添加新的元素。当第一次将该函数放到LabVIEW的框图中的时候,该函数可能像下图左侧所示是个非常简单的图标。你可以通过拖动该函数下边框的图标或者是通过在该函数上点击右键从右键菜单中选择AddInput来为该函数增加输入参数的个数,如下图右侧所示。该函数可以有两种类型的输入:数组以及数组元素,该函数可以从数组以及单值的输入来组装一个新的数组。 ? 创建数组函数的输入会根据你连接到输入端点的数据类型自动调整为元素类型或数组类型的输入。在更高级的应用中,该函数还可以创建多维数组或者是为多维数组增加新的数组元素。为多维数组增加元素时,该元素必须是比要增加的数组小一维的数组。例如,为二维数组添加的新元素必须是一个一维数组。也可以将多个一维数组作为元素连接到这个函数的输入端点上来创建一个新的二维数组,每个一维数组就成为这个二维数组的一行。如果你只是将这些一维数组接续为一个新的一维数组的话,就需要在该函数上点击鼠标右键并从右键菜单中选择ConcatenateInputs选项。?子数组函数会按照该函数输入的起始索引以及长度返回输入数组的一部分。该函数如下图所示: ? 在使用这个函数的时候一定要记住LabVIEW中数组的索引是从0开始的,第一个数组元素的索引是0,而不是1。?获取数组元素函数(IndexArray)可以用来访问数组中的某个特定元素。该函数如下图所示。 ? 对于一维数组来说,只要输入要访问的元素的索引就可以在对应的输出得到该元素的值;不过对于二维数组来说,通过输入特定元素的行号、列号就可以访问到该元素的值,如果你想获得某行或某列的全部值,那么在输入端只输入行号或列号即可。 ?删除部分数组函数(DeleteFromArray)可以删除数组中从某一索引号开始某设定长度的部分并返回删除该部分后的数组以及被删除的部分数组。该函数如下图所示:

matlab数据类型及转换

Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。 1、整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通过intmax(class)和intmin(class) 函数返回该类整型的最大值和最小值,例如intmax(‘int8’)=127; 2、浮点:(single;double) 浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。 3、逻辑:(logical) Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0: A = rand(5); A(A>0.5)=0; 4、字符:(char) Matlab中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。如日期字符:DateString=’9/16/2001’ 实际上是一个1行9列向量。构成矩阵或向量的行字符串长度必须相同。可以使用char函数构建字符数组,使用strcat函数连接字符。 例如,命令name = ['abc' ; 'abcd'] 将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ; 'abcd'],更简单的办法是使用char函数:char(‘abc’,’abcd’),Matlab自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数. 例如size(char(‘abc’,’abcd’))返回结果[2,4],即字符串’abc’实际存在的是’abc ’,此时如需提取矩阵中的某一字符元素,需要使用deblank函数移除空格如name =char(‘abc’,’abcd’); deblank(name(1,:))。 此外,Matlab同时提供一种更灵活的单元格数组方法,使用函数cellstr可以将字符串数组转换为单元格数组: data= char(‘abc’,’abcd’) length(data(1,:)) ->? 4 cdata=cellstr(data) length(cdata{1}) ->?3 常用的字符操作函数 blanks(n) 返回n个空字符 deblank(s) 移除字符串尾部包含的空字符 (string) 将字符串作为命令执行 findstr(s1,s2) 搜索字符串 ischar(s) 判断是否字符串 isletter(s) 判断是否字母 lower(s) 转换小写 upper(s) 转换大写 strcmp(s1,s2) 比较字符串是否相同 strncmp(s1,s2,n) 比较字符串中的前n个字符是否相同 strrep(s1,s2,s3) 将s1中的字符s2替换为s3 5、日期和时间 Matlab提供三种日期格式:日期字符串如’1996-10-02’,日期序列数如729300(0000年1月1日为1)以及日期向量如1996 10 2 0 0 0,依次为年月日时分秒。 常用的日期操作函数

第三章lAB VIEW 数组、簇和图形1

第三章数据类型:数组、簇和波形 3.1概述 数组是同类型元素的集合。一个数组可以是一维或者多维, 如果必要,每维最多可有231-1个元素。可以通过数组索引访问 其中的每个元素。索引的范围是0到n – 1,其中n是数组中 元素的个数。图3-1所显示的是由数值构成的一维数组。注意 第一个元素的索引号为0,第二个是1,依此类推。数组的元素 可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2数组的创建及自动索引 3.2.1创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。 如果需要用一个数组作为程序的数据源,可以选择 Functions?Array?Array Constant,将它放置在流程图中。然后 再在数组框中放置数值常量、布尔数还是字符串常量。下图显示 了在数组框放入字符串常量数组的例子。左边是一个数组壳,中 间的图上已经置入了字符串元素,右边的图反映了数组的第0个 元素为:”ABC”,后两个元素均为空。 图3-1数组的创建

在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然后将 它们复制或者拖曳到流程图中,创建对应的常数。 还有很多在流程图中创建和初始化数组的方法,有些功能函 数也可以生成数组。 3.2.2数组控制对象、常数对象和显示对象 通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。数组元素不能是数组、图表或者图形。如果您想查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。 3.2.3自动索引 For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。这些功能称为自动索引。在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。 在默认情况下,对于每个连接到For循环的数组都会执行自 动索引功能。可以禁止这个功能的执行,方法是用鼠标右键单击 通道(输入数组进入循环的位置),在快捷菜单中选择Disable Indexing。 练习3-1创建一个自动索引的数组 目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。 前面板 图3-2练习3-1的面板 1.打开一个新的前面板。 2.选择Controls?Array & Cluster,在前面板 中放置一个数组。设置它的标签为Waveform Array。 3.选择Controls?Numeric,在

java基本数据类型习题(选择24)

1、下列哪一个是合法的标识符: A、12class; B、+viod; C、-5; D、_black; 2、下列哪一个不是JAVA语言中保留字: A、if; B、sizeof; C、private; D、null; 3、下列描述中正确的一项是: A、标识符首字符的后面可以跟数字; B、标识符不区分大小写; C、复合数据类型变量包括布尔型、字符型、浮点型; D、数组属于基本数据类型; 4、下列哪一项不属于变量的组成部分: A、变量名; B、变量属性; C、变量初值; D、变量大小; 5、下列关于变量组成部分描述正确的一项是: A、变量名不是标识符;

B、变量名是标识符; C、浮点型属于复合类型; D、变量属性分为:基本类型和符合类型; 6、下列选项中,哪一项不属于JAVA语言的简单数据类型: A、整数型; B、数组; C、字符型; D、浮点型; 7、下列关于变量作用域的描述中,不正确的一项是: A、变量属性是用来描述变量作用域的; B、局部变量作用域只能是它所在的方法的代码段; C、类变量能在类的方法中声明; D、类变量的作用域是整个类; 8、下列关于基本数据类型的说法中,不正确的一项是: A、boolean是JAVA非凡的置值,或者为真或者为假; B、float是带符号的32位浮点数; C、double是带符号的64位浮点数; D、char应该上是8位的Unicode字符; 9、下列关于溢出的说法中,正确的一项是: A、一个整型的数据达到整型能表示的最大数值后,再加1,则机器产生上溢,结果为整型的最大值; B、一个整型的数据达到整型能表示的最小数值后,再减1,

labview实验报告

LabVIEW课程设计 报告书 班级 学号 姓名 一、基础题

1、用labview的基本运算函数编写以下算式的程序代码: 首先在前面板创建一个数值输出控件,然后在程序框图中按照上图连接线路,点击运行,程序结果。 2、利用摄氏温度与华氏温度的关系C = 5(F ?32) / 9编写一个程序,求华氏温度 (F)为32, 64, 4, 98.6 , 104, 212时的摄氏温度。

在程序前面板创建一个数值输入控件和一个数值显示控件,在程序框图中添加一个公式节点,添加一个输出和一个输入分别输入和显示控件项链,在公式节点框图中输入温度转换公式,然后在面前扮输入相应的温度点击运行,得到相应的结果。 3、创建一个2行3列的二维数组控制件,为数组成员赋值如下: 00 .600.500.400.300.200.1 在前面板创建一个数组显示控件,然后将1、2、3创建成数组第一行,4、5、6创建成数组第二行,再将两行创建成一个两行三列的二位数组,点击运行显示输 出结果。 4、用数组创建函数创建一个二维数组显示件,成员为:

1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 编程将上述创建的数组转置为: 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 1 5 6 1 2 6 1 2 3 先在面前板上创建一个上图这样的数组。再创建两个显示数组(一个为显示数组,另一个为转换后数组),在程序框图上面按照下图连线,在原数组和转换后数组之间接一个“二维数组转制”, 点击运行后显示为:

5、创建一个簇控制件,成员分别为字符型控制件姓名,数值型控制件学号,布 尔型控制件注册。从这个簇控制件中提取出簇成员注册,显示在前面板上。 在面板上添加一个簇,在族里分别添加一字符显示控件,数值显示控件,布尔型 显示控件,程序框图连接如图: 先解除捆绑然后再捆绑,输入姓名、学号点击运行在输出簇里显示。 6、创建一个字符串显示件,程序运行后显示当前系统日期、时间和自己的班级、姓名。

实验2基本数据类型与数组(最新整理)

民族学院实验报告 计算机科学 系 级 班 指导教师 报告人20 年 月 日 成 绩 课程名称 JAVA 语言程序设计实验名称实验二 基本数据类型与数组实验 目的 1.掌握基本数据类型及其相互之间的转换2.掌握JAVA 中数组的使用实验仪器 和器材具有JDK 环境的计算机一台 实验内容和要求 一、输出希腊字母表 1.请按模板要求,将【代码】替换为Java 程序代码,运行该程序时在命令窗口中输出希腊字母表。其运行效果如图 2.1所示。 图2.1 输出希腊字母表 GreekAlphabet.java public class GreekAlphabet { public static void main(String[] args) { int startPosition=0,endPosition=0; char cStart='α',cEnd='ω'; startPosition=(int )cStart; //cStart 做int 型数据转换,并将结果赋值给startPosition endPosition=(int )cEnd; //cEnd 做int 型数据转换,并将结果赋值给EndPosition System.out.println("希腊字母\'α\'在Unicode 表中的顺序位置:"+(int)cStart); System.out.println("希腊字母表:"); for (int i=startPosition;i<=endPosition;i++){ char c='\0'; cStart=(char )i; //i 做char 型转换运算,并将结果赋值给c System.out.print(" "+c); if ((i-startPosition+1)%10==0) System.out.println(); } } } 2.实验后练习 (1)将一个double 型数据直接赋值给float 型变量,程序编译时提示怎样的 错误? 答:程序提示的内容为:“可能损失精度”。 (2)在应用程序的main 方法中增加语句:

labview读取txt文档,按列取数组,画图

要读取的txt文档为两列,第一列为x坐标,第二列为y坐标,两列之间用制表符隔开,格式如下: -4.000000E+1 8.583130E-6 -3.990000E+1 9.536800E-6 -3.980000E+1 1.001360E-5 -3.970000E+1 1.049050E-5 -3.960000E+1 1.001360E-5 -3.950000E+1 1.096730E-5 -3.940000E+1 1.096730E-5 -3.930000E+1 1.096730E-5 -3.920000E+1 1.096730E-5 -3.910000E+1 1.192100E-5 -3.900000E+1 1.192100E-5 -3.890000E+1 1.096730E-5 -3.880000E+1 1.192100E-5 -3.870000E+1 1.192100E-5 -3.860000E+1 1.192100E-5 -3.850000E+1 1.192100E-5 -3.840000E+1 1.239780E-5 -3.830000E+1 1.192100E-5 -3.820000E+1 1.239780E-5 -3.810000E+1 1.192100E-5 -3.800000E+1 1.239780E-5 -3.790000E+1 1.192100E-5 -3.780000E+1 1.192100E-5 -3.770000E+1 1.144420E-5 -3.760000E+1 1.192100E-5 -3.750000E+1 1.096730E-5 -3.740000E+1 1.192100E-5 -3.730000E+1 1.096730E-5 -3.720000E+1 1.144420E-5 -3.710000E+1 1.096730E-5 -3.700000E+1 1.096730E-5 -3.690000E+1 1.096730E-5 -3.680000E+1 1.096730E-5 读取坐标数据后画图,效果如下: 1.读取直接使用函数:文件I/0——》读取电子表格文件

2.3 基本数据类型的转换

2.3基本数据类型的转换 本章目标 掌握基本数据类型间的自动转换 掌握任何基本数据类型的数据都会自动向String转换 掌握基本数据类型间的强制转换 Java的数据类型在定义时就已经确定了,因此不能随意转换成其他的数据类型,但Java允许用户有限度地做类型转换处理。数据类型的转换方式可分为“自动类型转换”及“强制类型转换”两种。 1 数据类型的自动转换 在计算机中完成一个计算时,要求参与计算的两个数值必须类型一致,如果不一致,计算机会自动将其中一个数值类型转换成另外一个数值的类型,然后完成计算。自动转换的原则如下: (1)转换前的数据类型与转换后的类型兼容。 (2)转换后的数据类型的表示范围比转换前的类型大。 例如,将short类型的变量a转换为int类型,由于short与int皆为整数类型,符合上述条件(1);而int的表示范围比short大,符合条件(2)。因此Java 会自动将原为short类型的变量a转换为int类型。 要注意的是,类型的转换只限该行语句,并不会影响原先所定义的变量的类型,而且通过自动类型的转换可以保证数据的精确度,它不会因为转换而损失数据内容。这种类型的转换方式也称为扩大转换。 范例:数据类型的转换 程序运行结果: x / y = 1.3519603 10 / 3.5 = 2.857142857142857 10 / 3 = 3 从程序的输出结果可以发现,int类型与float类型进行计算之后,输出的结

果会变成float类型,一个整型常量和一个浮点型常量进行计算之后,结果也会变为一个浮点数据,而如果两个int类型的常量进行计算,最终结果还是int类型,而其小数部分将会被忽略。 也就是说,假设有一个整数和双精度浮点数据做运算时,Java会所整数转换成双精度浮点数后再做运算,运算结果也会变成双精度浮点数。 提示:任何类型的数据都向String转型。 有一种表示字符串的数据类型String,从其定义上可以发现单词首字母大写了,所以此为一个类,属于引用数据类型,但是此类属于系统类,而且使用上有些注意事项,对于此种类型后面会有介绍,在此处所需要知道的只有以下两点: (1)String可以像普通变量那样直接通过赋值的方式进行声明。字符串是使用“””括起来的。两个字符串之间可以使用“+”进行连接。 (2)任何数据类型碰到String类型的变量或常量之后都向String类型转换。 范例:定义字符串变量 程序运行结果: str = lixinghua30 从运行结果来看,可以发现整型数据30自动转换成了字符的“30”,与字符串“lixinghua”进行了连接操作,变成了一个新的字符串“lixinghua30”。 范例:字符串常量操作的问题

lABVIEW关于数据类型的编辑:数组、簇和波形

数据类型:数组、簇和波形 .1概述 数组是同类型元素的集合。一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。可以通过数组索引访问其中的每个元素。索引的范围是0到n – 1,其中n是数组中元素的个数。图3-1所显示的是由数值构成的一维数组。注意第一个元素的索引号为0,第二个是1,依此类推。数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2数组的创建及自动索引 3.2.1创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(如果需要用一个数组作为程序的数据源,可以选择Functions?Array?Array Constant,将它放置在流程图中。然后再在数组框中放置数值常量、布尔数还是字符串常量。下图显示了在数组框放入字符串常量数组的例子。左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素均为空。 图3-1数组的创建 在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然它们

Labview数组

创建多维数组首先要在一维数组基础上修改维数。修改数组维数通常有以下几种方法。 (1)改变索引框大小来增减维数。将光标移至索引号四周,出现改变大小的箭头,单击鼠标拖动箭头改变索引号框的大小和索引号的个数。索引号的个数就代表数组的维数,如图1所示为拖出了两个索引号,成为二维数组,然后再改变元素区域大小以显示出二维数组。 图1 改变索引号大小以创建二维数组 (2)通过索引号的右键快捷菜单选项“添加维度”来增加数组的维数,通过选项“删除维度”来减少数组的维数,如图2所示。 (3)选择数组的右键快捷菜单选项“属性”,在弹出的属性对话框中改变数组的维数,如图3所示,在对话框“外观〃选项卡左下方的“维”数字框中即可设置维数。

图2 通过索引号的右键快捷菜单选项增减维数

图3 数组属性对话框 在前面板窗口中,可以创建上述输入控件数组,也可以创建显示控件数组。在添加元素时选择添加显示控件即可创建显示控件数组。 在程序框图窗口中可以创建数组常量。在程序框图函数选板中选择“编程-数组→数组常量”置于程序框图窗口中,出现如图4所示数组常量框架。数组常量框架类似于前面板数组框架,包括索引号和元素区域。 创建数组常量的过程与创建输入控件数组类似,设置显示的元素和增减维数的方法也相同。首先在数组常量框架中然后设置数组元素,操作过程如图5 所示。

图4 数组常量框架 图5创建数值型数组常量 首先要说明一下,LabVIEW中其实并没有明确的赋值的概念,他和传统的文本编程语言的思路不一样,是数据流驱动的编程。在一般的文本编程语言里,定义二维数组变量的时候只是开辟了一块内存空间,里面是空的,所以要有赋值的过程;而LabVIEW中内存不需要手动分配,其后台有自动管理内存的机制,出现新的二维数组的时候,不需要变量定义,直接分配内存空间,然后就把数据存进去了。如果硬要说有什么“赋值”的概念的话,LabVIEW中倒是有几种常见的类似于“赋值”的操作。 1.在二维数组控件的前面板里直接填入数值 这个最简单,不用多说想必你也明白,手动填数。 2.创建单一元素的数组 需要用到初始化数组,见下图

java的基本数据类型有八种

java的基本数据类型有八种 各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟! java的基本数据类型有八种四类八种基本数据类型1. 整型byte(1字节)short (2个字节)int(4个字节)long (8个字节)2.浮点型float(4个字节)double(8个字节)3.逻辑性boolean(八分之一个字节)4.字符型char(2个字节,一个字符能存储下一个中文汉字)基本数据类型与包装类对应关系和默认值short Short (short)0int Integer 0long Long 0Lchar Char '\u0000'(什么都没有)float Floa t0.0fdouble Double 0.0dboolean Boolean false 若某个类的某个成员是基本数据类型,即使没有初始化,java也会确保它获得一个默认值,如上所示。(这种初始化方法只是用于成员变量,不适用于局部变量)。jdk1.5支持自动拆装箱。可以将基本数据类型转换成它的包装类装箱Integer a = new Integer ();a = 100;拆箱int b = new Intger(100);一个字节等于8位,一个字节等于256个数,-128到127一个英文字母或一个阿拉伯数字就是一个字符,占用一个字节一个汉字两个字符,占用两个字节基本数据类型自动转换byte->short , char->int->longfloat->doubleint ->floatlong->double小可转大,大转小会失去精度。字符串与基本类型或其他类型间的转换⑴其它

labview数组、簇和图形的区别

数组是同类型元素的集合。一个数组可以是一维或者多维, 如果必要,每维最多可有231-1个元素。可以通过数组索引访问 其中的每个元素。索引的范围是0到n – 1,其中n是数组中 元素的个数。图3-1所显示的是由数值构成的一维数组。注意 第一个元素的索引号为0,第二个是1,依此类推。数组的元素 可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2数组的创建及自动索引 3.2.1创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。 如果需要用一个数组作为程序的数据源,可以选择 Functions?Array?Array Constant,将它放置在流程图中。然后 再在数组框中放置数值常量、布尔数还是字符串常量。下图显示 了在数组框放入字符串常量数组的例子。左边是一个数组壳,中 间的图上已经置入了字符串元素,右边的图反映了数组的第0个 元素为:”ABC”,后两个元素均为空。 图3-1数组的创建 在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然后将

数据类型转换

数据类型转换 一、隐式类型转换 1)简单数据类型 (1)算术运算 转换为最宽的数据类型 eg: [cpp] view plain copy #include using std::cout; using std::endl; int main(int argc, char* argv[]) { int ival = 3; double dval = 3.14159; cout << ival + dval << endl;//ival被提升为double类型 return 0; } 其运行结果: 6.14159 int main(int argc, char* argv[]) { 010D17D0 push ebp 010D17D1 mov ebp,esp 010D17D3 sub esp,0DCh 010D17D9 push ebx 010D17DA push esi 010D17DB push edi 010D17DC lea edi,[ebp-0DCh] 010D17E2 mov ecx,37h 010D17E7 mov eax,0CCCCCCCCh 010D17EC rep stos dword ptr es:[edi] int ival = 3; 010D17EE mov dword ptr [ival],3 double dval = 3.14159; 010D17F5 movsd xmm0,mmword ptr [__real@400921f9f01b866e (010D6B30h)]

010D17FD movsd mmword ptr [dval],xmm0 cout << ival + dval << endl;//ival被提升为double类型 010D1802 mov esi,esp 010D1804 push offset std::endl > (010D1064h) 010D1809 cvtsi2sd xmm0,dword ptr [ival] 010D180E addsd xmm0,mmword ptr [dval] 010D1813 mov edi,esp 010D1815 sub esp,8 010D1818 movsd mmword ptr [esp],xmm0 010D181D mov ecx,dword ptr [_imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A (010D90A8h)] 010D1823 call dword ptr [__imp_std::basic_ostream >::operator<< (010D90A0h)] 010D1829 cmp edi,esp 010D182B call __RTC_CheckEsp (010D111Dh) 010D1830 mov ecx,eax 010D1832 call dword ptr [__imp_std::basic_ostream >::operator<< (010D90A4h)] 010D1838 cmp esi,esp 010D183A call __RTC_CheckEsp (010D111Dh) return 0; 010D183F xor eax,eax } 010D1841 pop edi } 010D1842 pop esi 010D1843 pop ebx 010D1844 add esp,0DCh 010D184A cmp ebp,esp 010D184C call __RTC_CheckEsp (010D111Dh) 010D1851 mov esp,ebp 010D1853 pop ebp 010D1854 ret (2)赋值 转换为被赋值对象的类型,但不会改变赋值对象的数据类型。 eg: [cpp] view plain copy #include

C++基本数据类型转换

atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include 定义函数 doubleatof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。 返回值 返回转换后的浮点型数。 附加说明 atof()与使用strtod(nptr,(char**)NULL)结果相同。 范例 /* 将字符串a 与字符串b转换成数字后相加*/ #include main() { char *a=”-100.23”; char *b=”200e-2”; float c; c=atof(a)+atof(b); printf(“c=%.2f\n”,c); } 执行 c=-98.23 atoi(将字符串转换成整型数) 相关函数 atof,atol,atrtod,strtol,strtoul 表头文件 #include

定义函数 intatoi(const char *nptr); 函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。 返回值 返回转换后的整型数。 附加说明 atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。 范例 /* 将字符串a 与字符串b转换成数字后相加*/ #include mian() { char a*+=”-100”; ch ar b*+=”456”; int c; c=atoi(a)+atoi(b); printf(c=%d\n”,c); } 执行 c=356 atol(将字符串转换成长整型数) 相关函数 atof,atoi,strtod,strtol,strtoul 表头文件 #include 定义函数 longatol(const char *nptr); 函数说明 atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。 返回值 返回转换后的长整型数。 附加说明 atol()与使用strtol(nptr,(char**)NULL,10);结果相同。 范例

数据类型转换

数据类型转换 各类整数之间的转换 C语言中的数分8位、16位和32位三种。属于8 位数的有:带符号 字符char,无符号字符unsigned char 。属于16位数的有:带符号整 数int,无符号整数unsigned int(或简写为unsigned),近指针。属 于32位数的有:带符号长整数long,无符号长整数 unsigned long, 远指针。 IBM PC是16位机,基本运算是16位的运算,所以,当8位数和16 位数进行比较或其它运算时,都是首先把8 位数转换成16位数。为了 便于按2的补码法则进行运算,有符号8位数在转换为16位时是在左边 添加8个符号位,无符号8位数则是在左边添加8个0。当由16位转换成 8位时,无论什么情况一律只是简单地裁取低8位,抛掉高8 位。没有 char或usigned char常数。字符常数,像"C",是转换为int以后存储 的。当字符转换为其它 16 位数(如近指针)时,是首先把字符转换为 int,然后再进行转换。 16位数与32位数之间的转换也遵守同样的规则。 注意,Turbo C中的输入/输出函数对其参数中的int和unsigned int不加区分。例如,在printf函数中如果格式说明是%d 则对这两种 类型的参数一律按2 的补码(即按有符号数)进行解释,然后以十进制 形式输出。如果格式说明是%u、%o、%x、%X,则对这两种类型的参数 一律按二进制 (即按无符号数) 进行解释,然后以相应形式输出。在 scanf函数中,仅当输入的字符串中含有负号时,才按2的补码对输入 数进行解释。 还应注意,对于常数,如果不加L,则Turbo C一般按int型处理。 例如,语句printf("%081x",-1L),则会输出ffffffff。如果省略1, 则输出常数的低字,即ffff。如果省略L,则仍会去找1个双字,这个 双字的就是int常数-1,高字内容是不确定的,输出效果将是在4个乱 七八糟的字符之后再跟ffff。 在Turbo C的头文件value.h中,相应于3 个带符号数的最大值, 定义了3个符号常数: #define MAXSHORT 0X7FFF #define MAXINT 0X7FFF #define MAXLONG 0X7FFFFFFFL 在Turbo C Tools中,包括3对宏,分别把8位拆成高4位和低4位, 把16位拆成高8位和低8位,把32位拆成高16位和低16位。 uthinyb(char value) utlonyb(char value) uthibyte(int value) utlobyte(int value) uthiword(long value) utloword(long valueu) 在Turbo C Tools中,也包括相反的3 个宏,它们把两个4位组成 一个8位,把两个8位组成一个16位,把两个16位组成一个32位。 utnybbyt(HiNyb,LoNyb) utwdlong(HiWord,Loword) utbyword(HiByte,LoByte)实数与整数之间的转换 Turbo C中提供了两种实数:float和 double。float 由32 位组 成,由高到低依次是:1个尾数符号位,8个偏码表示的指数位(偏值= 127),23个尾数位。double由64位组成,由高到低依次是:1 个尾数

相关主题
文本预览
相关文档 最新文档