老 C 狗,新 C 技巧第 1 部分:NULL 不等于 ptr

主要观点:作者作为 80 年代后期学习 C 的人,不断惊讶于 C 语言的新内容,介绍了在 C 语言中比较变量和赋值的常见错误,以及一种将比较反转以避免忘记等号的写法,还提到了不同地区对于数字和货币符号表示的差异等。
关键信息:

  • 80 年代的 C 编译器为 K&R 时代,函数定义形式不同。
  • 在 C 语言中,双等号“==”用于比较,单等号“=”用于赋值,易犯忘记等号的错误。
  • Aidan Hall 指出赋值表达式会返回赋值的值,如“if (a = 0)”不是比较而是赋值。
  • 可将比较反转,如“if (42 == a)”,能避免忘记等号,且这种写法虽看起来奇怪但有其合理性。
  • 作者开始在新代码中使用这种反转比较的写法,如“if (NULL!= ptr)”等。
    重要细节:
  • 给出了具体的代码示例,如错误的“if (a = 42)”和正确的“if (42 == a)”等。
  • 提到曾在不同工作中发现此类错误,包括自己写的代码。
  • 回忆在印度团队代码中看到反转比较的写法及对此的感受。
阅读 8
0 条评论