dim  a as string
dim b as integer
a="1"
b=1
c="1"
d=1
print  a>b   'false
print  c>d   'true
print  "1">1 'false
请问:不同类型数据比较,计算机是如何转换类型的
          不同类型的变体类型比较时,统一转换为如何种类型
         不同类型的常量比较时,统一转换为如何种类型

解决方案 »

  1.   

    a>b 、"1">1 编译器已经明确运算符两边类型,会将 Integer 转化为 String 进行比较。
    而 c>d 两边类型都是 Variant,是按照统一的 Variant 比较方法进行的。
    不知道什么原因,反正当初写这个比较方法的时候直接规定 String 比 Integer 大。不信你把 c 赋值为 "0" 甚至 "",c>d 始终返回 True。总之,除了两个不同类型的变量赋值的时候可以用隐式转换;其它比较之类的操作最好进行显式转换。
      

  2.   

    学习学习,字符是ASCII码值来比较
      

  3.   

    不要迷信书、考题、老师、回帖;
    要迷信CPU、编译器、调试器、运行结果。
    并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
    任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!有人说一套做一套,你相信他说的还是相信他做的?
    其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?不要写连自己也预测不了结果的代码!
      

  4.   

    类型不一致,会按照这种语法规定的高低,向统一的类型转换,再比较。字符,按照ASCII码值比较。
      

  5.   

    这种学法属于左脚拌右脚,右脚拌左脚. 即使弄明白了也毫无意义. 没有人会推荐这种代码的. 
    用显式的类型转换, 然后得到清晰无误解的答案, 那才是真正的效率呀. 就像c/c++里面好多人在那边炫耀什么++操作符在前在后的奇怪表达式和晦涩不明的结果一样.  据说统统是要被PM拉出去枪毙五分钟的.