三态价值 - 是否有约定?

Chr*_*s J 7 language-agnostic tri-state-logic

我被抛出一点点,我不确定答案是什么.

基本上 - 是否存在在三态数据类型中使用什么值的约定?做一些谷歌搜索,它看起来不像:我见过:

  • -1 = False,0 =未知/未定义,+ 1 =真
  • 0 = False,+ 1 = True,+ 2 =未知/未定义
  • -1 =未知/未定义,0 =假,+ 1 =真

..在其他人中.如果有的话,我宁愿使用一个众所周知的约定.否则我会提出一个:-)很可能没有正确答案,但只是想我会深入挖掘一下......

编辑
发现这个以及微软似乎在最近的代码中使用的那个:-1 = true,0 = false,2 =未知.我假设有2 ==未知意味着当仅仅查看调试器/转储/内存中的原始值时,它消除了解释+ 1/-1的歧义.奇怪的是,这个选项仅仅因为这个原因而上诉(消除了忘记1的变化意味着'真''.

Guf*_*ffa 4

据我所知,对此没有任何约定。

布尔值甚至没有单一的约定,最常见的是:

  • 0 = 假,-1 = 真
  • 0 = 假,1 = 真

另一个相关的常见(但不是通用)约定是使用 -1 表示未定义的值。

如果您选择使用 -1 表示未定义,则可以使用 0/1 表示 False/True:

  • -1 = 未定义
  • 0 = 假
  • 1 = 正确

当然,我不得不提的是,第三个状态当然不应该是未定义/未知,而是FileNotFound。;)