我对编译器对此的“想法”有争议:
a = 8;
b = !!a;
Run Code Online (Sandbox Code Playgroud)
那么,是b == 0x01?总是TRUE或者0x01可能是,0xFF等等?0xFFFF0xFFFFFFFF
如果我只想提取这种0x00双重(a == 0)否定 方法0x01是否(a > 0)有效?
换句话说:要获得结果只有 0 或 1,使用什么更好?
a) a>0?1:0;
b) !!a
我希望你能理解我的问题。
是的,b == 1。任何布尔运算符的结果始终是 0 或 1。不过你可以做得更好......
我只想提取 0x00 if (a == 0) 和 0x01 if (a > 0)
b = a > 0;最准确地反映您的规则。
您没有提供足够的信息来判断是否!!a适合您的目的。
您说过您确实需要 的结果a > 0。然而,这并不等同于!!aifa有符号并且持有负值。如果这可能的话,那么答案显然是“不”。
!!a相当于a != 0,而不是a > 0。
| 归档时间: |
|
| 查看次数: |
7062 次 |
| 最近记录: |