VARIANT 表示布尔值“真”, 不能 v.boolVal=true

学生:我想用 VARIANT 表示布尔值“真”,如何做?
 
  老师:VARIANT v; v.vt=VT_BOOL; v.boolVal=VARIANT_TRUE;

  学生:这么麻烦?我能不能 v.boolVal=true; 这样写?

  老师:不可以!因为

类型 字节长度 假值 真值
bool 1(char) 0(false) 1(true)
BOOL 4(int) 0(FALSE) 1(TRUE)
VT_BOOL 2(short int) 0(VARIANT_FALSE) -1(VARIANT_TRUE)

  所以如果你 v.boolVal=true 这样赋值,那么将来 if(VARIANT_TRUE==v.boolVal) 的时候会出问题(-1 != 1)。但是你注意观察,任何布尔类型的“假”都是0,因此作为一个好习惯,在做布尔判断的时候,不要和“真值”相比较,而要与“假值”做比较。

 

 

http://dev.yesky.com/47/2022047_1.shtml

你可能感兴趣的:(VARIANT 表示布尔值“真”, 不能 v.boolVal=true)