[这个问题有关,但并不等同于这一个 ]
如果我尝试使用某些类型的值作为布尔表达式,我会收到警告.我有时使用三元运算符(?:)转换为bool 而不是抑制警告.使用两个not运算符(!!)似乎做同样的事情.
这就是我的意思:
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?
Run Code Online (Sandbox Code Playgroud)
那么,双重技术真的做同样的事吗?它比三元技术更安全吗?这是技术与非整数类型(例如,具有同样安全void *或double对T)?
我不是在问好!!t风格.我在问它是否在语义上不同于t ? true : false.