求助一道选择题
S是一个长整型数,下列语句不能正常执行的是:()
A s=16384*2
B s=4*0.5*16384
C s=190^2
D s=32768*2
问题点数:20、回复次数:6Top
1 楼daisy8675(莫依 沉迷)回复于 2006-03-07 23:27:05 得分 0
晕死,最基础的知识不过关.
Private Sub Form_Load()
Dim S As Long
S = 16384 * 2
Debug.Print S
S = 4 * 0.5 * 16384
Debug.Print S
S = 190 ^ 2
Debug.Print S
S = 32768 * 2
Debug.Print S
End Sub
自己F8看那里出错就知道那里不行了Top
2 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-07 23:41:52 得分 9
运行结果为 A
也许该这样解释:
16384*2 ,这里16384是Integer类型,16384*2=32768 ,已经超出了Integer的范围,出错
4*0.5*16384,4*0.5,结果为Double类型,4*0.5*16384整个表达式结果为Double类型,4*0.5*16384=32768,结果未超出Double类型,正确
190^2,结果是Double类型,190^2= 36100,结果未超出Double类型,正确
32768*2,32768大于Integer的范围,被当作Long类型,32768*2=65536 未超出Long范围,正确
Top
3 楼bojianyu()回复于 2006-03-08 00:23:44 得分 0
还是不太明白,呵呵
s是长整型的啊,按道理A选项中16384*2=32768 中的32768没超出长整型数的范围啊,题中说的是长整型,不是整型Top
4 楼NewViewStudio(傻鱼)回复于 2006-03-08 02:14:13 得分 11
的确是A,因为无论你定义的变量如何,VB会按照顺序来执行你的代码
就拿这个错误的A来讲:
如果按照要求,我们应该这样写程序:
Dim S as Long
S=16384*2
而你的代码被分为如下多个片段来执行:
首先在内存中开辟一个4字节的空间给变量S来保存它的数据
然后执行S=16384*2,
而执行16384*2这句要分为两步,步骤1位计算16384*2,步骤2位将结果保存到S的内存占用空间
而执行16384*2又要分为3部,判定16384应该占用多大内存,判定2应该占用多大内存
这样得出结论为16384占用2个字节(即整型变量空间),2占用1个字节(即字节变量空间)
所以,16384*2的结果会先放入一个2字节的整型变量空间,然后再给S。
因此就会产生溢出的错误。
所以A是错误的。
Top
5 楼bojianyu()回复于 2006-03-08 12:32:27 得分 0
请问“16384*2的结果会先放入一个2字节的整型变量空间”中的整型变量空间是根据16384的需求空间给的吗,如果是的话那设S为长整型不就起不了什么作用了吗
Top
6 楼NewViewStudio(傻鱼)回复于 2006-03-13 00:48:38 得分 0
回去好好研究一下“常量”与“变量”的区别以及编译原理,你就明白了。Top




