在类里有一个局部变量:    Private iCount As Long ---------------------------------------------------
iCount =  1048576  '这样正常赋值iCount = 1024 * 1024 * 1 '这样却提示溢出注意:1024 * 1024 * 1 是等于 1048576  ,我想表示1M的大小,想1024 * 1024 * 1这样写更直观

解决方案 »

  1.   

    Dim iCount As Long
    iCount = 1048576   '这样正常赋值iCount = 1024# * 1024# * 1# '不溢出了
      

  2.   

    iCount = CLng(1024) * 1024 * 1 1024 * 1024 * 1,三个数都在Integer范围内,被当成Integer计算了不同类型数据运算的潜规则找不到了,哪位高手有的请贴贴。
      

  3.   

    说明:
    Visual Basic在判断常量的数据类型时,有时存在多义性。例如,值3.01可能是单精度类型,也可能是双精度类型或货币类型。在缺省的情况下,VB将选择需要内存容量最小的表示方法处理。值3.01通常被作为单精度数处理。为了显式地指明常数的类型,可以在常数后面加上类型说明符,这些说明符分别为:%     整型&     长整型!     单精度浮点型#     双精度浮点型@     货币型$     字符串型例如,3.01#  是一个双精度浮点型常数。100.05@  是一个货币型常数。
      

  4.   

    所以比较合理的是:
    Dim iCount As Long
    iCount = 1048576   '这样正常赋值iCount = 1024& * 1024& * 1& '不溢出了