读书人

vb字符串运算符quot;+quot;的有关问题

发布时间: 2012-01-30 21:15:58 作者: rapoo

vb字符串运算符"+"的问题
"+ "连接两旁的操作数应均为字符型,如均为数值型时进行算术运算;如一个为字符型数据,另一个为数值型则报错.如 "xyz "+123,系统包报错,但我输入 "100 "+100系统却给出了200的结果,按照运算规则,不是也应该为 "类型不匹配 "吗?请教大家了

[解决办法]
因为 + 默认为数值运算, "XYZ "转化不了数值型.所以会报错.
如果你用连接最好用 & ,只有除非两个都是字符串型才可以用+
[解决办法]
一边是数值的时候, 编译器认为是加法,
所以会去尝试把不是数值的那个转换成数值,然后相加
如果转换失败就报错了
所以 "xyz "+123 报错 而 "100 "+123=223
另外 "100 "+ "123 "= "100123 ", 因为两边都是字符串...

[解决办法]
VB中的+运算是比较特殊的:
1. 如果参加+运算的操作数中有数值或逻辑值, 则+运算会所有操作数转换成数值后来完成加法运算。转换时,逻辑值True被转换成-1, Fasle转换成0。例如:
? "100 " + 100
200
? True + True
-2
? Flase + False
0
? True + 1
0
? False + 1
1
? "1 " + True
0
? "AAA " + 100
类型不匹配,无法完成运算

2. 如果参加运算都是字符串,则该运算演变为字符串连接运算。例如:
? "1 " + "True "
1True
? "100 " + "100 "
100100

3. 如果参数运算的操作数中有日期型,则运算按日期型来完成。例如:
? #2007-01-01# + 1
2007-1-2
? #2007-01-01# + "2 "
2007-1-3
? #2007-01-01# + True
2006-12-31
? #2007-01-01# + False
2007-1-1
[解决办法]
而VB中的&运算,则会把所有参加运算的操作数转换为字符串后完成字符串连接运算。例如:
? 123 & 123
123123
? "123 " & 123
123123
? 123 & True
123True
? 123 & False
123False
? 123 & #2007-01-01#
1232007-1-1

读书人网 >VB

热点推荐