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

a=InStr(5,"hello!Beijing.","e")b=Sgn(3>2)c=a+bMsgBoxc这里msgboxc最后显示的为什么是7而不是9... a = InStr(5, "hello! Beijing.", "e")
b = Sgn(3 > 2)
c = a + b
MsgBox c

这里msgbox c最后显示的为什么是7而不是9
展开
 我来答
狼与花椒O
2013-03-30 · TA获得超过186个赞
知道答主
回答量:42
采纳率:0%
帮助的人:65.6万
展开全部
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。
然后去远足
2013-03-29 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2420万
展开全部
你确定显示的是7?
明明是 8 吖..

a = InStr(5, "hello! Beijing.", "e")
'从hello! Beijing.第5个字符开始,寻找字符e并返回其位置
'所以a=9

b = Sgn(3 > 2)
'Sgn(X)函数有如下返回值:
'如果X>0 Sgn 返回1
'如果X=0 Sgn 返回0
'如果X<0 Sgn 返回-1
'3>2值为True <0
'所以b=-1

c = a + b
'c=9+(-1)=8
追问
为什么 True<0 呢?
这点想不通...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式