VB类型转换 1dim I as integer dim J as integerI3J8print.debug I + Jprint.debug I & J2dim rst as ne
VB类型转换 1 dim I as integer dim J as integer I=3 J=8 print.debug I + J print.debug I & J 2 dim rst as new recordset set rst=…… print.debug rst.Fields("--") print.debug rst.Fields("--").value 能详细的讲解一下 VB类型转换 这个问题。[解决办法]
引用: 1 dim I as integer dim J as integer I=3 J=8 print.debug I + J print.debug I & J 2 dim rst as new recordset set rst=…… print.debug rst.Fields("--") print.debug rst.Fields("--").v…… 1.如果用+,这个适用于+号两边都是数值。而你的代码两端正都是数值,那么vb就认为用户是要做数字运算,这样就得出了11,你测试下 "3" + 8,结果也是11。但是如果是 "3" + "8"得出的就是38了。
如果用&,那么表示两端应该是字符串。vb就自动转换为字符串连接了。
总结:编译器优先使用标准规则,如果不行则退而求其次,尽量满足用户的要求,“智能化”自动处理。
2.rst.Fields("--")只知道是返回某条记录的某个字段对应的值。下面的.value没用过。
[解决办法] 我觉得吧,
print.debug 其实打印的应该是字符串
这里也是隐式的类型转换
我就想知道,VB的类型转换是怎么实现的。这些东西在c++里讲的很清楚,换到VB就不是很清楚了~~
[解决办法] 引用: 我觉得吧, print.debug 其实打印的应该是字符串 这里也是隐式的类型转换 我就想知道,VB的类型转换是怎么实现的。这些东西在c++里讲的很清楚,换到VB就不是很清楚了~~ 是的,如果vb严格要求起来那么当你输出时都必须加个cstr或者str函数转换下,否则就报错类型不匹配或者内存不能read xx的,你觉得方便么?
[解决办法] 1、自动类型转换是有编译器决定,所以只要记住几个规则就行了
a)始终用 & 操作符进行拼接字符串,坚决不用 + 操作符。
b)参与运算前就明确类型,即用数值类型进行计算、用字符串进行拼接。
2、这里的比较与类型转换无关。
print.debug rst.Fields("--") print.debug rst.Fields("--").value 前一个语句 Field 对象是不能直接变成文本的,但是作为 COM 对象,如果它的某个成员标记为默认属性,就会取该成员(Value 属性),所以两个语句是等价的。
[解决办法] 不要用隐式类型转换
直接用显式类型转换
函数 返回类型 expression 参数范围
CBool Boolean 任何有效的字符串或数值表达式。
CByte Byte 0 至 255。
CCur Currency -922,337,203,685,477.5808 至922,337,203,685,477.5807。
CDate Date 任何有效的日期表达式。
CDbl Double 负数从 -1.79769313486232E308 至 -4.94065645841247E-324;正数从 4.94065645841247E-324 至 1.79769313486232E308。
CDec Decimal 零变比数值,即无小数位数值,为
+/-79,228,162,514,264,337,593,543,950,335。对于 28 位小数的数值,范围则为
+/-7.9228162514264337593543950335;最小的可能非零值是 0.0000000000000000000000000001。
CInt Integer -32,768 至 32,767,小数部分四舍五入。
CLng Long -2,147,483,648 至 2,147,483,647,小数部分四舍五入。
CSng Single 负数为 -3.402823E38 至 -1.401298E-45;正数为 1.401298E-45 至 3.402823E38。
CStr String 依据 expression 参数返回 Cstr。
CVar Variant 若为数值,则范围与 Double 相同;若不为数值,则范围与 String 相同。
[解决办法] Private Sub Command1_Click() Dim i As Integer Dim j As Integer i = 3 j = 8 Debug.Print i + j '+对数值类型做加法,对字符串做连接符 Debug.Print i & j '&只对字符串做连接符 End Sub Private Sub Command2_Click() Dim i As String Dim j As String i = 3 j = 8 Debug.Print i + j '+对数值类型做加法,对字符串做连接符 Debug.Print i & j '&只对字符串做连接符 End Sub
print.debug rst.Fields("--") print.debug rst.Fields("--").value '由于值是字段对象的默认属性,所以此处实际关键字value的使用是可选的。 MSDNValue 属性范例中有说明。[解决办法] Private Sub Command1_Click() Dim i As Integer Dim j As Integer i = 3 j = 8 Debug.Print i + j '+对数值类型做加法,对字符串做连接符 Debug.Print i & j '&只对字符串做连接符,会自动转换数值到字符串 End Sub Private Sub Command2_Click() Dim i As String Dim j As String i = 3 j = 8 Debug.Print i + j '+对数值类型做加法,对字符串做连接符 Debug.Print i & j '&只对字符串做连接符,会自动转换数值到字符串 End Sub print.debug rst.Fields("--") print.debug rst.Fields("--").value '由于值是字段对象的默认属性,所以此处实际关键字value的使用是可选的。 MSDN Value 属性范例中有说明。[解决办法] 建议楼主少用隐性转换,比如:i & j 可以改写为: cstr(i) & cstr(j)
[解决办法] 要字符串就用 &
要数值就用 +
纯吹是没事找事,你说对吧,楼猪大人。
[解决办法] 引用: 要字符串就用 & 要数值就用 + 纯吹是没事找事,你说对吧,楼猪大人。 有个人也说来类似的话,我前天把他开了。
现在的人真是浮躁!
msvbvm60.dll 里怎样进行的隐式转换这一问题呀,我到MS网站上找了好久也没有找到。高级VB编程 里也没有解释。