[此问题与此问题相关但不同。]
如果我尝试使用某些类型的值作为布尔表达式,我会收到警告。?:
我有时会使用三元运算符 ( ) 来转换为布尔值,而不是抑制警告。使用两个非运算符 ( !!
) 似乎做同样的事情。
这就是我的意思:
typedef long T; // similar warning with void * or double
T t = 0;
bool b = t; // performance warning: forcing 'long' value to 'bool'
b = t ? true : false; // ok
b = !!t; // any different?
那么,双重不技术真的做同样的事情吗?它比三元技术更安全还是更安全?这种技术对于非整数类型(例如 withvoid *
或double
for T
)是否同样安全?
我不是在问是否!!t
是好风格。我在问它是否在语义上不同于t ? true : false
.