VB,VB题,这串代码Call p(x, (y))处括号里面有个括号什么意思

PrivateSubCommand1_Click()DimxAsInteger,yAsIntegerx=30:y=48Callp(x,(y))Printx;yEndSub... Private Sub Command1_Click()
Dim x As Integer, y As Integer
x = 30: y = 48
Call p(x, (y))
Print x; y
End Sub
Public Sub p(ByVal n As Integer, m As Integer)
n = n \ 10
m = m \ 10
End Sub
难道是说p(x, (y))都是给n传值吗?
展开
 我来答
岔路程序缘

2015-01-18 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3375万
展开全部
(1)Sub p(ByVal n As Integer, m As Integer)

(2)Call p(x, (y))

先看第(1)句,定义的过程p()包含两个参数,其中n是传值的,m是传址的。
再来看第(2)句,调用时,x变量的值传递给n(传值)。如果y不加括号,则是传址给m;现在给y又加上了括号,则y也是传值给m的了。这是y单独加不加括号的的区别。

现在回答你的疑问:“难道是说p(x, (y))都是给n传值吗?”

答:因为变量x对应n参数,所以给n传值与y加不加括号没有关系。之后以n是传值,是因为定义过程时的说明(参见在第(1)句中byval)。
追问
我试了下去掉ByVal结果y还是原数,是不是只要加上括号就变味传值了
追答
x变量的值是传值给参数n,所以子过程中对n的赋值不会影响到x,它们已经没有关联。这是因为ByVal n As Integer的原因;
y变量的值也是传值给参数m,所以对m的赋值不会影响到y,它们已经没有关联。这是因为(y)的原因。
需要注意的是:ByVal仅仅对x->n有效,而对后面的y->m无效,所以,你去掉byval,并不会影响y的传递方式。若想两个参数都传值,要写成Sub p(ByVal n As Integer,byval m As Integer)才可以。

所以,在原程序中,你只是把byval去掉,y仍然保持的是传值状态,所以它还是原数。你说的“只要加上括号就变味传值了”是对的。
shuoyizhi
2015-01-18 · TA获得超过2596个赞
知道小有建树答主
回答量:1519
采纳率:0%
帮助的人:590万
展开全部
括号没意思 就如同 1+2+2+(2*3)中的括号 有和没有全是 现计算2*3 这里也一样 有核没有都是 y传给第二个参数m
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式