R..*_*R.. 22
虽然其他人提供了答案,但我想为最好的答案提供理由.
使用整数值-1/0/1(或实际上,任何负数/零/正数).
使用此方案,可以非常有效地检查可能值的任何子集:
(x<0) /* {-1} */
(!x) /* {0} */
(x>0) /* {1} */
(x<=0) /* {-1,0} */
(x) /* {-1,1} */
(x>=0) /* {0,1} */
Run Code Online (Sandbox Code Playgroud)
在x86上,所有这些都将编译为单个test操作码,然后是具有适当条件的条件跳转操作码.
如果要隐藏实现,可以使用谓词宏来测试6个子集中的每个子集.
Car*_*rum 13
而不是int直接使用?你可以typedef的enum:
typedef enum {
LOW = 0,
HIGH = 1,
TRISTATE = 2
} TriState;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12218 次 |
| 最近记录: |