在VB里面,为什么sgn(3>2) 会返回 -1 而不是 1

问题描述:

在VB里面,为什么sgn(3>2) 会返回 -1 而不是 1
a = InStr(5,"hello!Beijing.","e")
b = Sgn(3 > 2)
c = a + b
MsgBox c
这里msgbox c最后显示的为什么是7而不是9

VB中函数Sgn(数值)用来返回数值的符号,如果“数值”>0,则返回1,如果“数值”<0,则返回-1,如果“数值”=0,则返回0.现在这个式子是Sgn(3>2),这里的形式是一个关系表达式,3>2的结果显示是True,现在的关键是布尔型的数值True需要转换成数值,然后才能得到其符号的.
在VB中,布尔型数值转换成数值型时,True对应-1,False对应0,现在3>2的结果为True,对应数值为-1,相当于变成Sgn(-1),当然其结果为-1了.如果Sgn(3<2),其结果为0.