Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否与c++&&;(及)营办商_C++ - Fatal编程技术网

C++ 是否与c++&&;(及)营办商

C++ 是否与c++&&;(及)营办商,c++,C++,a-检查是否为函数b定义了输入 if (a) { if (b) { /* ... */ } } 显然,这是可行的。 操作员是否总是检查第一个输入 if (a && b) { /* ... */ } 这可能会导致b函数出现未定义的行为吗?在表达式a&&b中,假设&是内置运算符而不是重载运算符,b仅在a的计算结果为true时进行计算 这就是为什么您可以编写像if(a!=nullptr&&a)这样的东西 我们称之为短路|也具有该属性。是的,内

a
-检查是否为函数
b定义了输入

if (a) {
    if (b) {
        /* ... */
    }
}
显然,这是可行的。 操作员是否总是检查第一个输入

if (a && b) {
    /* ... */
}

这可能会导致b函数出现未定义的行为吗?

在表达式
a&&b
中,假设
&
是内置运算符而不是重载运算符,
b
仅在
a
的计算结果为
true
时进行计算

这就是为什么您可以编写像if(a!=nullptr&&a)
这样的东西


我们称之为短路<代码>|也具有该属性。

是的,内置的
&
短路


因此,如果
a
为false,则不会计算
b
。这是可以保证的,除非有超负荷的
操作符&&(类型a,类型b)

,如芭丝谢芭所说,如果您的代码是

if (a && b) {
    //...
}
那么只有当a的结果为真时,才会检查b。 这是因为&&运算符是所谓的快捷方式运算符。 逻辑OR(| |)也是如此

然而,在这种情况下,只有当a的结果为false时,才会对b进行评估


不要将它们与按位运算符(&和|)混淆,它们会检查这两个值

阅读该术语,以备将来参考。该术语称为“短路评估”。对| |运算符是否适用?还有,消息来源?@Bortifan:哈,把它放进去只是为了个人的快乐。源是C++标准的iNIT。@ BorticFan C++的书解释了它,并且DUPE包含了从标准非常非常好的一点上的逐字引用!我不确定我是否听说过它被称为“快捷操作器”。如果说有什么区别的话,有些人把
x+=42
称为“快捷操作符”(而不是
x=x+42
),尽管这似乎并不普遍。对不起,我的错。短路运算符。我在手机上输入了答案,我想自动更正让我做到了。
if (a || b)//...