level 15
这是表达式计算当中一个坑人的地方,就是实际的运算顺序和表达式显示的顺序可能并不一致
按照正常理解,应该先取M和N的值相加,然后再加上Fun1(M,N)的值,这样就应该使用M和N改变之前的值,计算完之后才改变它们的值,这样结果应该是1+2+9=12
而实际上,这里是先调用了函数Fun1,所以M和N的值先发生了变化,然后才计算了其余的加法部分,这样M和N分别变成了3和6,最终结果则是18
2022年02月13日 13点02分
14
这样啊,谢谢
2022年02月13日 15点02分
level 9
这实际上是因为VB默认是按地址传递的,在第一次调用Fun1函数后,x,y的值变化了,再把保存这个值的地址传递给M,N,这样M,N的值也就变了。你可以按值传递就不会引起M,N的值变化了,加关键字 ByVal。用这个 Private Function Fun1(ByVal x As Integer, ByVal y As Integer) 定义Fun1函数。
2022年02月13日 15点02分
15