两道VB题,在线等

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:48:30
1. 在过程中已说明a.b.c均为integer型变量,且均已被赋值,其中a=30,b=40,c=50,如再执行下面语句,可正常执行的是
A. print a*b*c B. print a*b*c*1&
C. print 1&*a*b*c D. print a*b*c*1!
2.假设变量lng为长整型变量,下面不能正常执行的语句是
A.lng=16384*2 B.lng=4*0.5*16384
C.lng=190^2 D.lng=32768*2
请解释下各选项,谢谢!!!
3楼首先谢谢你的第2题解释,但是对于第1题我试过了就C可以执行,其他全部是溢出,能解释下吗?谢谢,后天要等级考试了!
3楼的对不起了,看了4楼的我懂了,分给他了!

貌似没有正确答案,插个嘴吧

第一题应是选C,VB的整数默认使用Integer,Integer的表示范围是-32,768到32,767,30*40*50=60000,远超出Integer的范围,所以如果不转为long型则会溢出,如果把第一个参与运算的数字改为Long型的话,结果就会是Long型,就不会溢出了,所以用1后面加上隐性声明&把1强制转为Long型,这样就不会溢出,所以应该选择C

第二题应选A,原理同上,16384*2=32768,刚好超出Integer的范围,所以同样会溢出

A
C
1主要是print 格式要求
2是长整型越界问题,没什么好解释的都是规定.

1& 意思是“1”这个字符,自然无法做乘法运算;你用VB实际操作不久看出那些能运行了?

1楼错了,程序拿到VB中测试过了,
2楼说的不对,1&,是将1当作整型数处理的,详见下:

1、这道题有问题,全部都可以正常执行,结果都为60000,你可以拿到VB中试试。
其中,1!表示单精浮点(single),1& 表示长整型Long,
还有其它的各种符号如下:
! Single
# Double
$ String
% Integer
& Long
@ Currency

2、不能正常执行的是A。(这道题很有意思,我是借助VB帮助才知道的)
A lng=16384*2 ,由于16384是处于integer整型的数据范围(-32,768 到 32,767),所以16384*2的结果被当作了整型处理,但是结果是32768,超出了整型的范围,所以报“溢出”错误。
如果改为lng=16384&*2结果就不会报错了,因为&符号使运算结果自动变成了Long型。
B.lng=4*0.5*16384 ,由于有小数参加运算,所以算成了浮点型,所以结果先是被当作了浮点型处理后再转成的Long型的,所以不报错
C.lng=190^2 ,^运算的结果是Double型的,所以同上
D.lng=32768*2 ,由于32768超出了in