kar*_*hik 15 c c++ syntax if-statement
在探索msdn站点时,他们使用的大多数条件检查位置(NULL == bCondition).
使用这些符号的目的是什么?
请提供一些样品来解释这些.
谢谢.
kar*_*hik 29
NULL == condition在拼写错误的情况下使用提供更有用的行为,当=意外使用赋值运算符而不是比较运算符时==:
if (bCondition = NULL) // typo here
{
// code never executes
}
if (NULL = bCondition) // error -> compiler complains
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
C编译器在前一种情况下发出警告,在许多语言中都没有这样的警告.
许多人更喜欢写NULL == bCondition,以便他们意外地不将NULL值赋给bCondition.
因为拼写错误而不是写作
bCondition == NULL
Run Code Online (Sandbox Code Playgroud)
他们最终写作
bCondition = NULL // the value will be assigned here.
Run Code Online (Sandbox Code Playgroud)
的情况下
NULL = bCondition // there will be an error
Run Code Online (Sandbox Code Playgroud)
没有区别.这是一种古老的防御性编程方式,已经淘汰了20多年.目的是在比较两个值时防止意外键入=而不是==.迁移到C的Pascal程序员特别容易写这个bug.
从1990年发布的Borland Turbo C开始,当你设法输入这个bug时,每个已知的编译器都会警告"可能不正确的分配".
所以写作(NULL == bCondition)并不比相反的更好或更差,除非你的编译器非常古老.您无需为任何特定顺序编写它们而烦恼.
您应该打扰的是,在if/loop条件下,如果您从未在内部编写赋值,则调整编码样式.没有理由这样做.这是C语言的一个完全多余,冒险和丑陋的特性.所有行业事实上的编码标准都禁止在内部条件下进行分配.
参考文献:
| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |