今天才明白,VB原来是弱类型语言,虽然它是静态语言,但却是弱类型的

lzxlzx777 2009-09-02 04:02:11
今天才明白,VB原来是弱类型语言,虽然它是静态语言,但却是弱类型的
--------------------------------------
当加上:
option explicit
后,VB中的变量必须先定义,后使用,所以我一直以为它是强类型语言,今天才豁然开朗,它竟然是弱类型语言。
结论,它是静态语言,但却是弱类型。

以下代码可知。b是字符串型,但是可以隐式转为整型,这是弱类型的标志。
而强类型的特点是,类型一直不能变。
Private Sub Command1_Click()
Dim a As Integer
Dim b As String
Dim c As Integer
a = 90
b = "10"
c = a + b
Debug.Print c
End Sub
...全文
300 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2009-09-07
  • 打赏
  • 举报
回复
类型始终是 Variant,typename 查看的是子类型。

女扮男装和男扮女装只是看起来象,本质上没有变性。
神马都能聊 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 tiger_zhao 的回复:]
类型始终是 Variant,typename 查看的是子类型。

女扮男装和男扮女装只是看起来象,本质上没有变性。
[/Quote]
赞老鸟的说法,VB中的类型都是Variant,这些类型都是在Automation中定义的。
sonic_andy 2009-09-04
  • 打赏
  • 举报
回复

dim a
a=1
msgbox typename(a)
a="1"
msgbox typename(a)
a=#2008-10-01 23:59#
msgbox typename(a)
a=1.1
msgbox typename(a)
set a = createobject("scripting.dictionary")
msgbox typename(a)
嗷嗷叫的老马 2009-09-04
  • 打赏
  • 举报
回复
原来弱类型的意思是"强行改变变量的类型"

而VB是"强行转换内容为被赋值类型".....
Tiger_Zhao 2009-09-03
  • 打赏
  • 举报
回复
dim a as long 
a = "abc"

如果是弱类型,上面的语句可以执行,并且变量 a 会变成字符串类型。
水猿兵团五哥 2009-09-03
  • 打赏
  • 举报
回复
沽名???
  • 打赏
  • 举报
回复
学习
熊孩子开学喽 2009-09-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 lzxlzx777 的回复:]
今天才明白,VB原来是弱类型语言,虽然它是静态语言,但却是弱类型的
--------------------------------------
当加上:
option explicit
后,VB中的变量必须先定义,后使用,所以我一直以为它是强类型语言,今天才豁然开朗,它竟然是弱类型语言。
结论,它是静态语言,但却是弱类型。

以下代码可知。b是字符串型,但是可以隐式转为整型,这是弱类型的标志。
而强类型的特点是,类型一直不能变。
Private Sub Command1_Click()
    Dim a As Integer
    Dim b As String
    Dim c As Integer
    a = 90
    b = "10"
    c = a + b
    Debug.Print c
End Sub
[/Quote]

理解有误,VB并没有改变变量类型,VB只是把参与计算的值的类型转换了一下.
slowgrace 2009-09-03
  • 打赏
  • 举报
回复
不过,说实话,我不是很看得懂,只是看出来文章作者对好多种语言都有所了解。
slowgrace 2009-09-03
  • 打赏
  • 举报
回复
大家看看26楼这篇文章,看那位博主说的有道理么?
slowgrace 2009-09-03
  • 打赏
  • 举报
回复
lzxlzx777 2009-09-03
  • 打赏
  • 举报
回复
强弱与好坏是两码事。
估计很多人认为我说vb是弱类型,就认为我贬低vb,其实这是误解。
现在弱类型语言是一种发展趋势
嗷嗷叫的老马 2009-09-02
  • 打赏
  • 举报
回复
路过.

管它弱类型还是强类型.

我用它让我得到了收入就行了..............嘿嘿.
jhone99 2009-09-02
  • 打赏
  • 举报
回复

他们反驳你的例子
zdingyun 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 lzxlzx777 的回复:]
呵呵,看来很多人不明白,什么是弱类型,什么是强类型。

VB是弱类型,这是有定论的
并不是我个人的猜想。
[/Quote]
http://www.baidu.com/s?wd=%C8%F5%C0%E0%D0%CD%D3%EF%D1%D4
lzxlzx777 2009-09-02
  • 打赏
  • 举报
回复
呵呵,看来很多人不明白,什么是弱类型,什么是强类型。

VB是弱类型,这是有定论的
并不是我个人的猜想。
threenewbee 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zdingyun 的回复:]
VB codePrivateSub Command1_Click()Dim aAsLongDim bAsLong
a="90"
b="10"
Debug.Print a& b
Debug.Print a+ bEnd Sub

VB codePrivateSub Command1_Click()Dim aAsStringDim bAsString
a="90"
b="10"
Debug.Print a& b
Debug.Print a+ bEnd Sub

[/Quote]

写的好!

另外,弱类型有弱类型的优点。而且是未来语言的趋势。
zdingyun 2009-09-02
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim a As Long
Dim b As Long
a = "90"
b = "10"
Debug.Print a & b
Debug.Print a + b
End Sub


Private Sub Command1_Click()
Dim a As String
Dim b As String
a = "90"
b = "10"
Debug.Print a & b
Debug.Print a + b
End Sub

zhengmenghua 2009-09-02
  • 打赏
  • 举报
回复
弱类型语言  也称为弱类型定义语言。与强类型定义相反。像vb,php等就属于弱类型语言.例如:在vbscript中,可以将字符串 12 和整数 3 进行连接得到字符串 123,然后可以把它看成整数 123,而不需要显式转换。

刚去百科查下什么是弱语言 却发现百科写了这么一句

像vb,php等就属于弱类型语言. 应该有一定道理 和楼主推测相符
加载更多回复(16)

7,784

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧