我遇到以下代码片段: pt->aa[!!(ts->flags & MASK)] = -val; 什么!! (双感叹号/感叹号/两个不是操作符)代表c? 不是(!!NULL) == NULL ?
我在C ++中使用了“bool”types的variables,并试图将我期望为布尔型的函数或属性的值放入我的variables中。 但是,我经常遇到结果types为“bool?”的情况 而不是“布尔”和隐式投射失败。 两者之间有什么区别,什么时候分别使用? 另外,我应该使用“布尔?” 作为我的variables的types? 这是最佳做法吗?
是否有任何理由不使用C ++中的“bool”值按位运算符&,|和^? 我有时遇到两种条件中的一种是真的(XOR),所以我只是把^运算符放到一个条件expression式中。 我也有时候希望评估一个条件的所有部分,不pipe结果是否正确(而不是短路),所以我使用&和|。 我也需要积累布尔值,&=和| =可以是非常有用的。 这样做的时候,我已经提出了一些眉毛,但代码仍然是有意义的,比其他方式更清洁。 有没有任何理由不使用这些bools? 有没有现代编译器给这个不好的结果?
昨天我想添加一个布尔字段到Oracle表。 但是,在Oracle中实际上并不存在布尔型数据types。 有没有人在这里知道模拟一个布尔值的最佳方式? 谷歌search主题发现了几种方法 使用一个整数,只是不打扰分配除0或1以外的任何东西。 使用'Y'或'N'字符作为唯一的两个值。 使用带CHECK约束的枚举。 有经验的Oracle开发人员知道哪种方法是首选/规范的?
我注意到,Linux内核代码使用bool,但我认为bool是一个C ++类型。 bool是一个标准的C扩展(例如ISO C90)还是一个GCC扩展?