| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 703 人关注过本帖
标题:崩溃的低级错误
只看楼主 加入收藏
woa
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2008-12-4
结帖率:85.37%
收藏
 问题点数:0 回复次数:8 
崩溃的低级错误
Dim s1 As Integer, s2 As Integer, s3 As Integer, s4 As String

s1 = InStr("123", "1")
s2 = InStr("123", "2")
s3 = InStr("123", "3")

                If s1 < s2 < s3 Then
                s4="1,2,3"      
                End If
               
                If s1 < s3 < s2 Then
                s4 = "1,3,2"
                End If
               
                If s2 < s3 < s1 Then
                s4 = "2,3,1"
                End If
               
                If s2 < s1 < s3 Then
                s4 = "2,1,3"
                End If
               
                If s3 < s1 < s2 Then
                s4 = "3,1,2"
                End If
               
                If s3 < s2 < s1 Then
                s4 = "3,2,1"
                End If
                MsgBox s4
为什么是 3 , 2 , 1
2011-05-31 05:35
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:0 
If s1 < s2 < s3 Then

运算过程:
1、S1《S2 ,小于,就是 1,不小于就是 0 。(真=1,假=0)(C里面,真=-1,假=0。与VB不同。)
2、(1|0)〈S3 。
S3 是 3 ,1 或 0 永远小于 3的,所以,整个表达式结果为 真。
所以,你所有的表达式都成立,然后s4不断给值,最终只保留最后一下:
s4="3,2,1"

------------
还有,你这句也错了。
s1 = InStr("123", "1")
你百度一下这个命令的语法吧。

授人于鱼,不如授人于渔
早已停用QQ了
2011-05-31 08:43
爱末流
Rank: 2
等 级:论坛游民
帖 子:101
专家分:16
注 册:2011-6-3
收藏
得分:0 
)(C里面,真=-1,假=0。与VB不同。)
我不理解
非0转为-1(真)0转换为0(假)这是VB里面的转换,,,C我就不知道了..自己去试下..C和VB一样
2011-06-03 11:23
爱末流
Rank: 2
等 级:论坛游民
帖 子:101
专家分:16
注 册:2011-6-3
收藏
得分:0 
还有,你这句也错了。
s1 = InStr("123", "1")
这哪里错?  s1返回的是1
汗.......
2011-06-03 11:25
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
???

程序代码:
Private Sub Form_Load()
Dim s1 As Integer, s2 As Integer, s3 As Integer, s4 As String

    s1 = InStr("123", "1")
    s2 = InStr("123", "2")
    s3 = InStr("123", "3")

    If s1 < s2 < s3 Then
        s4 = "1,2,3"
'    End If
    
    ElseIf s1 < s3 < s2 Then
        s4 = "1,3,2"
'    End If
    
    ElseIf s2 < s3 < s1 Then
        s4 = "2,3,1"
'    End If
    
    ElseIf s2 < s1 < s3 Then
        s4 = "2,1,3"
'    End If
    
    ElseIf s3 < s1 < s2 Then
        s4 = "3,1,2"
'    End If
    
    ElseIf s3 < s2 < s1 Then
        s4 = "3,2,1"
    End If
    
    MsgBox s4
                
End Sub


不要選我當版主
2011-06-03 12:44
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:0 
回3楼,这个不是重点。我记错了也有可能。
这个用的到的地方实在是少,一般只管 0 和 非0 就是了。 0 是假,非0 就是真。

你要达到什么目的??
得出谁大谁小??


s1 = InStr("123", "1")
这句里:为了不容易引起混乱,一般写成
s1 = InStr(1,"123", "1")

VB里语法:
instr([strat,]"源字符","查找字串")

授人于鱼,不如授人于渔
早已停用QQ了
2011-06-03 16:44
woa
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2008-12-4
收藏
得分:0 
以下是引用风吹过b在2011-6-3 16:44:45的发言:

回3楼,这个不是重点。我记错了也有可能。
这个用的到的地方实在是少,一般只管 0 和 非0 就是了。 0 是假,非0 就是真。
 
你要达到什么目的??  
得出谁大谁小??
 
 
s1 = InStr("123", "1")
这句里:为了不容易引起混乱,一般写成
s1 = InStr(1,"123", "1")
 
VB里语法:
instr([strat,]"源字符","查找字串")
完整语法是这样,但是我用的是简便语法,没发生过错误。现在只是对比3个数的大小
2011-06-14 01:52
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:0 
在vb里关系运算符是不能连着用的,否则得不到正确答案,楼主的s1<s2<s3应该分解为s1<s2 and s2<s3,这样就可以得到楼主想要的结果。不管在什么系统里,真假都是字节型数据,全0即&H00表示为假,全1即&HFF表示为真,&HFF即有符号数据的-1.
2011-06-14 08:02
快速回复:崩溃的低级错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026683 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved