如果和比较顺序
IF and order of comparisons
我正在从事一个项目,我一直在寻找这样的行:
if(pointer && pointer->whatever) {...}
可以肯定地假设if
将以与源代码中所述相同的顺序进行比较?或者可能会在对 pointer
进行null之前(或同时)对pointer->wathever
进行评估?
是的,这是一个安全的语句。有条件的&&
和||
以c。
如果pointer
是NULL
,则pointer->whatever
将执行不是。
if(pointer && pointer->whatever)
就像写作:
if(pointer) {
if(pointer->whateve) {
}
}
所以,是的。阅读有关短路评估的信息。
&&
操作员的评估顺序(对于C和C )是从左到右的。因此,在以下任何语句之前,将始终对指针进行测试。如果对指针进行了错误的评估(短路),则不会评估以下任何语句。
逻辑表达式将从Left-to-right
评估,一旦结果变得确定,它就会停止评估其他表达式。因此,如果表达式pointer
如果false
,则不会评估pointer->whatever
。因此,像您一样使用它是一个像样的使用。
相关文章:
- C++是否保证标准容器比较中操作数的顺序?
- C++中的结构是否按顺序分配内存?每次都以某种方式获得指针比较的正确答案
- 检索字符串的第一个字符,并在C++中按字母顺序进行比较
- 正确的方法或设计模式,以简化类中的“operatorX”函数,以按给定顺序比较相同类型的属性
- 使用C++原子库,我应该使用什么样的内存顺序进行加载,然后进行比较交换
- C 有效比较整数序列(相对顺序)
- 如果和比较顺序
- C++中是否有一个std::string的内置函数,当两个字符串都可以是大写或小写时,可以按字母顺序比较两个字符串
- 进行顺序比较的优雅方法(C++)
- 使用不同的比较保持相同的排序顺序
- 按顺序比较C++迭代器安全吗
- c++比较器函数,为映射指定特定的键顺序
- 如何在不考虑类型顺序的情况下比较相同类型的元组
- 按字典顺序比较c++中的char*
- 关于评价顺序和比较的几个问题
- 对象之间的比较按顺序引发编译错误
- 比较算法的执行时间:为什么执行顺序很重要?
- 关于 VC++ 和 Sun Studio 中的字段初始化顺序、签名比较和未使用的变量的警告
- 比较C++中字母相同但顺序不同的字符串
- 比较链表,C++,相同的顺序却可以不同的抓取