继续玩题目,这段代码打印的结果是啥?

神马都能聊 2011-02-12 11:58:07
这段代码打印的结果是啥?这是为什么呢?
Dim v As Variant, i As Integer

i = 100
v = i

Debug。Print i
Debug。Print v
Debug。Print Len(i)
Debug。Print Len(v)


我的可用分越来越少了,随后再给帖子加分吧。
...全文
135 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhone99 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 aisac 的回复:]



我的可用分越来越少了,随后再给帖子加分吧。
[/Quote]

让lxq19851204害了
神马都能聊 2011-02-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 aisac 的回复:]
VB code
Dim v As Variant, i As Integer

i = 100
v = i

看来变量v在此过程中的物理存储结构没有发生变化,只是某处的类型标识成了Variant了,而Len函数不考虑这个标识。
[/Quote]
Variant -> Integer
dbcontrols 2011-02-13
  • 打赏
  • 举报
回复
嗷嗷叫的老马 2011-02-13
  • 打赏
  • 举报
回复
BT的面试官!!!
冰凝 2011-02-12
  • 打赏
  • 举报
回复
再说,Debug。Print i
Debug。Print v
Debug。Print Len(i)
Debug。Print Len(v) 其中“。”会出错吧


冰凝 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aisac 的回复:]
也就是说v的类型实际上还是Variant?那在前面v = i时,类型已经是Integer了啊? 玩迷糊了。。。难道还跟双重性格一样,还有双重类型的?
[/Quote]
同感
king06 2011-02-12
  • 打赏
  • 举报
回复
MSDN上说,算术运算子可以对 Variant 变量运算,其中包含数值或能被解释为数值的字符串数据。
Dim v As Variant, i As Integer
i = 100
v = i
Debug.Print Len(i) '2
Debug.Print LenB(i) '2
Debug.Print TypeName(v) 'Integer
Debug.Print Len(v) '3
Debug.Print LenB(v) '6
这个还真如你所说有双重性格了 ,定义的是什么类型,本体就是什么类型. 但具体到长度就是实际包含的数据类型.MSDN都说了它是一种特殊类型
神马都能聊 2011-02-12
  • 打赏
  • 举报
回复
也就是说v的类型实际上还是Variant?那在前面v = i时,类型已经是Integer了啊? 玩迷糊了。。。难道还跟双重性格一样,还有双重类型的?

ttsffgg 2011-02-12
  • 打赏
  • 举报
回复
Variant用的太少,没研究
chinaboyzyq 2011-02-12
  • 打赏
  • 举报
回复
数值按类型所占字节返回,整型2字节2,长整4字节4。
vriant按字符个数返回,也就是当串长度返回。
神马都能聊 2011-02-12
  • 打赏
  • 举报
回复
Dim v As Variant, i As Integer

i = 100
v = i

看来变量v在此过程中的物理存储结构没有发生变化,只是某处的类型标识成了Variant了,而Len函数不考虑这个标识。
神马都能聊 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sysdzw 的回复:]
Len 函数


返回 Long,其中包含字符串内字符的数目,或是存储一变量所需的字节数。

语法

Len(string | varname)

Len 函数的语法有下面这些部分:

部分 说明
string 任何有效的字符串表达式。如果 string 包含 Null,会返回 Null。
Varname 任何有效的变量名称。如果 varname 包含 Null……
[/Quote]
嗯,我也是看书才知道Len函数挺有特点的,在此之前我没用过Variant类型。
神马都能聊 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sysdzw 的回复:]
楼主要是去做面试官那肯定是一个bt的面试官。
[/Quote]
我是看书看到的问题,不过将来我要是真去做面试官的话,我也不知道会做成啥样……,毕竟我没做过,不敢说。
lxq19851204 2011-02-12
  • 打赏
  • 举报
回复
无·法 2011-02-12
  • 打赏
  • 举报
回复
楼主要是去做面试官那肯定是一个bt的面试官。
无·法 2011-02-12
  • 打赏
  • 举报
回复
Len 函数


返回 Long,其中包含字符串内字符的数目,或是存储一变量所需的字节数。

语法

Len(string | varname)

Len 函数的语法有下面这些部分:

部分 说明
string 任何有效的字符串表达式。如果 string 包含 Null,会返回 Null。
Varname 任何有效的变量名称。如果 varname 包含 Null,会返回 Null。如果 varname 是 Variant,Len 会视其为 String 并且总是返回其包含的字符数。
chinaboyzyq 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aisac 的回复:]

也就是说v的类型实际上还是Variant?那在前面v = i时,类型已经是Integer了啊? 玩迷糊了。。。难道还跟双重性格一样,还有双重类型的?
[/Quote]

是len把variant变量当字符串变量处理,而不是当整型变量处理。
knightgy 2011-02-12
  • 打赏
  • 举报
回复
在Variant类型中,每位数字占2字节

7,763

社区成员

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

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