发布于 2008-02-22 16:16:31
0楼
我想我可以理解楼上所说的,变量究竟是哪种数据类型来参与运算取决于所使用的指令。假如变量的值是200,那么使用movw指令将其送入vw100中后,究竟它是作为int类型还是word类型,比较模糊,当使用整数操作类指令时,它是作为int类型参与运算的,若使用的是字型操作类指令,那么它将作为word类型数据参与运算。需要注意的是,这是个变量而不是常量,若是常量就只能是word类型的了。
由于不同的数据类型即使它们的长度相同,取值范围也是有差别的,比如上边的word和int类型,我觉得除了可以通过数值和符号来判断数据类型外,其他就要看使用的指令了。若+1000,由于它是带符号的,就只能是整形数而不能是word或者dword型的,这时我有个疑问,若1000,那它有没有可能是整形数(int)呢?(整形数(int)是有符号数),是不是既可能是word型也可能是int型,还可能是dword或dint型的呢?我觉得即使常数的数据类型不确定,当它存入存储器时也要有个类型的吧?
我自己做了个小试验:写一段小程序,使用movw指令将65536传送入vw100,编译没有问题,在65536前加上符号+,马上提示有语法错误产生,将数据改为+32737,错误消失,改成+32768,错误出现。这说明当数值是1000时,它是作为word类型出现的,而不是int型,当+1000时,是作为int型出现的。不知我的理解是否正确?
请高手指点!!!