求助一道选择题

bojianyu 2006-03-07 11:15:55
S是一个长整型数,下列语句不能正常执行的是:()

A s=16384*2
B s=4*0.5*16384
C s=190^2
D s=32768*2
...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
NewViewStudio 2006-03-13
  • 打赏
  • 举报
回复
回去好好研究一下“常量”与“变量”的区别以及编译原理,你就明白了。
bojianyu 2006-03-08
  • 打赏
  • 举报
回复
请问“16384*2的结果会先放入一个2字节的整型变量空间”中的整型变量空间是根据16384的需求空间给的吗,如果是的话那设S为长整型不就起不了什么作用了吗
bojianyu 2006-03-08
  • 打赏
  • 举报
回复
还是不太明白,呵呵
s是长整型的啊,按道理A选项中16384*2=32768 中的32768没超出长整型数的范围啊,题中说的是长整型,不是整型
NewViewStudio 2006-03-08
  • 打赏
  • 举报
回复
的确是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是错误的。
faysky2 2006-03-07
  • 打赏
  • 举报
回复
运行结果为 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范围,正确
daisy8675 2006-03-07
  • 打赏
  • 举报
回复
晕死,最基础的知识不过关.

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看那里出错就知道那里不行了

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧