【问题标题】:Why does Objective-C use YES and NO instead of 1 and 0? [closed]为什么 Objective-C 使用 YES 和 NO 而不是 1 和 0? [关闭]
【发布时间】:2026-01-02 03:40:01
【问题描述】:

Objective-C 使用 YES 和 NO 而不是 1 和 0 是否有任何技术原因,或者仅仅是为了使其更具可读性?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    使其更具可读性技术原因。

    【讨论】:

      【解决方案2】:
      typedef signed char        BOOL; 
      // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
      // even if -funsigned-char is used.
      #define OBJC_BOOL_DEFINED
      
      
      #define YES             (BOOL)1
      #define NO              (BOOL)0
      

      (供参考)

      [button setAttr:YES];
      

      恕我直言,听起来更好......

      [button setAttr:TRUE];
      

      【讨论】:

        【解决方案3】:

        C(Objective-C 所基于)在 C99 之前没有布尔类型。

        Objective-C 创建于 80 年代,并定义了它自己的布尔类型。

        【讨论】:

        • Objective-C80 年代的时尚
        【解决方案4】:

        因为程序员意味着 yesno,而不是10 .

        【讨论】:

          【解决方案5】:

          大多数语言使用truefalse的原因相同...您可以根据需要使用1和0,与任何其他语言相同。

          真的,如果您考虑一下,我们正在谈论:

          #define YES 1
          #define NO  0
          

          读起来更舒服。

          【讨论】:

          • 你仍然可以在objective-c中使用true/false
          • @zPesk:没错。 @SoloBold:谢谢 :)
          • 我是唯一一个经常被这个绊倒的人吗...我在bash shell中长大..@ 987654325@... “意味着好”,aka YES!... á la exit 0... 每次我使用 C boolean 我必须强迫我的思想接受这个自相矛盾的现实!
          • @alexgray 我也是一个“Bash”主义者。一种要记住的方法是:“当存在 0 错误(即 Bash 中的 0 == true)并且其他一切都认为存在错误时,bash shell 正确执行是 true 1 错误(即 1 == 在非 Bash 语言中为真)"
          【解决方案6】:

          这只是语法,没有技术原因。他们只是使用 YES/NO 作为 BOOL,而不是像 c++ 那样使用 true/false。

          【讨论】:

          • 投了反对票,因为这不能回答问题。
          最近更新 更多