VB中有没有什么类型可以替换VC中的unsigned long和 __int64 类型?
vb中的Long型只有4byte,有没有达到8byte的整型?
如果我想要一个4byte的无符号的整型,怎么表示?
double型是一个8byte的,但它不是整型,能不能用?
vb中的Long型只有4byte,有没有达到8byte的整型?
如果我想要一个4byte的无符号的整型,怎么表示?
double型是一个8byte的,但它不是整型,能不能用?
2 __int64 没有对等的 ANSI 类型。double 和 __int64 的存储格式有本质区别。
一个是用Currency替代。
一个是用Decimal替代。
不过计算的时候都要小心。
最后是用LARGE_INTEGER,自己写进行计算的代码。
VB.NET中有新的数据类型Decimal应该能满足
unsigned long用Long替代
__int64用Currency替代
然后自己用位运算处理无符号部分
如果你自己需要处理那么大的数字
unsigned long用Currency替代
__int64用Currency或Decimal替代
注意VB的Currency是 右移4个十进制位 的__int64
VB:
类型 位数 值范围
Integer 2*8=16bit -32768到+32768
Long 4*8=32bit +/-2.1E9
Sigle 4*8=32bit -3.402823E38到-1.401294E-45
1.401298E-45到3.402823E38
Double 8*8=64bit -1.7E308到-4.9E-324
4.9E-324到1.7E308
Currency 8*8=64 -9223372036854775808到9223372036854775807String 每个字符8bit 最长65000变长2百万
Byte 1*8=8bit 0到255
Boolean 2*8=16bit true或false
Date 8*8=64bit 100年1月1日到9999年12月31日
Object 4*8=32
Variant
总觉的用currency来代替 __int64有些不好,因为它是用浮点运算的
还有用long来代替unsigned long必须都加一个自己的运算
左边是VB表达式,右边是C表达式
ctemp + cop 实际上是:(*(__int64*)&ctemp) + (*(__int64*)&cop)
ctemp - cop 实际上是:(*(__int64*)&ctemp) - (*(__int64*)&cop)
ctemp * cop 实际上是:(*(__int64*)&ctemp) * (*(__int64*)&cop) / 10000 /*注意现在是C风格,/是整数除法*/
ctemp \ cop 实际上是:(*(__int64*)&ctemp) 10000 / (*(__int64*)&cop)Currency类型在显示的时候故意加上小数点
这里特谢 ///zyl910(910:分儿,我又来了!)