【回答】:对Optional这个关键字理解透了就会明白是怎么回事,其实这是在声明一个可选的传值变量,“Optional X3 As Single = 10”这句声明代码的意思是声明一个可选传值变量“X3”,如果调用时赋值的话,以调用时传递的值为准,如果缺省的话,就使用默认值“10”。这样这个结果就很正常了,第一次“Call hhh(C, a1, a2)”时,X3、X4的值都没有赋,那么过程会默认使 展开
【回答】:对Optional这个关键字理解透了就会明白是怎么回事,其实这是在声明一个可选的传值变量,“Optional X3 As Single = 10”这句声明代码的意思是声明一个可选传值变量“X3”,如果调用时赋值的话,以调用时传递的值为准,如果缺省的话,就使用默认值“10”。这样这个结果就很正常了,第一次“Call hhh(C, a1, a2)”时,X3、X4的值都没有赋,那么过程会默认使用初始值,计算的结果就是1+2+10+20=33第二次“hhh(C, a1, a2, a3)”时,将a3的值传递给X3,而X4没有传值,就只能使用初始值“20”,于是计算结果是:1+2+3+20=26第三次“hhh(C, a1, a2, a3, a4)”,a3的值传递给了X3,a4的值传递给了X4,所以计算结果是1+2+3+4=10简而言之,有人给Optional关键字限定的变量赋值时,就用人家给的值,没人给就用自己的默认值。如附件中“Optional.xls”中所示,如果没有给出初始值,那么要进行预处理(即调用过程时没有传值,则视同传递了一个0值给可选参数),以防程序溢出。对于optional2的语句还是不太明白:为何第一次结果=33,第二次结果=26,第三次结果=10,能否再解释一下,可以吗?Public Sub hhh(Y As Single, X1 As Single, X2 As Single, Optional X3 As Single = 10, Optional X4 As Single = 20) Y = X1 + X2 + X3 + X4End SubPublic Sub main() Dim C As Single, a1 As Single, a2 As Single, a3 As Single, a4 As Single a1 = 1: a2 = 2 Call hhh(C, a1, a2) MsgBox "C=:"& C a1 = 1: a2 = 2: a3 = 3 Call hhh(C, a1, a2, a3) MsgBox "C=:"& C a1 = 1: a2 = 2: a3 = 3: a4 = 4 Call hhh(C, a1, a2, a3, a4) MsgBox "C=:"& C End Sub 收起