您的位置:程序门 -> vb -> 基础类



vb字符串运算符"+"的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vb字符串运算符"+"的问题[已结贴,结贴人:xiaozhu2003]
发表于:2007-03-21 11:18:31 楼主
"+ "连接两旁的操作数应均为字符型,如均为数值型时进行算术运算;如一个为字符型数据,另一个为数值型则报错.如 "xyz "+123,系统包报错,但我输入 "100 "+100系统却给出了200的结果,按照运算规则,不是也应该为 "类型不匹配 "吗?请教大家了
发表于:2007-03-21 11:25:231楼 得分:1
因为   +   默认为数值运算, "xyz "转化不了数值型.所以会报错.
如果你用连接最好用   &   ,只有除非两个都是字符串型才可以用+
发表于:2007-03-21 11:29:082楼 得分:1
一边是数值的时候,   编译器认为是加法,
所以会去尝试把不是数值的那个转换成数值,然后相加
如果转换失败就报错了
所以   "xyz "+123   报错   而   "100 "+123=223
另外 "100 "+ "123 "= "100123 ",   因为两边都是字符串...
发表于:2007-03-21 11:36:343楼 得分:2
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
发表于:2007-03-21 11:38:224楼 得分:1
而vb中的&运算,则会把所有参加运算的操作数转换为字符串后完成字符串连接运算。例如:
?   123   &   123
123123
?   "123 "   &   123
123123
?   123   &   true
123true
?   123   &   false
123false
?   123   &   #2007-01-01#
1232007-1-1


快速检索

最新资讯
热门点击