快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记娱乐AG手机版_机器人论坛



与C一样,C++应用布尔表达式简化求值法(short-circuit evaluation)和记娱乐AG手机版。这表示一旦确定了布尔表达式的真假值,纵然还有部分表达式没有被测试,布尔表达式也竣事运算。例如:

char *p;

...

if ((p != 0) && (strlen(p) > 10)) ...

这里不用担心当p为空时strlen无法精确运行,由于假如p不即是0的测试掉败,strlen不会被调用。同样:

int rangeCheck(int index)

{

if ((indexupperBound)) ...

...

}

假如index小于lowerBound,它不会与upperBound进行对照。

很早曩昔上述行径特点就被反复灌注贯注给C和C++的法度榜样员,以是他们都知道该特点。而且他们也依附于简短求值法来写法度榜样。例如在上述第一和记娱乐AG手机版个代码中,当p为空指针时确保strlen不会被调用是很紧张的,由于C++标准说(正如C标准所说)用空指针调用strlen,结果不确定。

C++容许根据用户定义的类型,来定制&&和||操作符。措施是重载函数operator&& 和operator||,你能在全局重载或每个类里重载。然而假如你想应用这种措施,你必须知道你正在极大年夜地改变游戏规则。由于你以函数调用法替代了简短谋略法。也便是说假如你重载了操作符&&,对付你来说代码是这样的:

if (expression1 && expression2) ...

对付编译器来说,等同于下面代码之一:

if (expression1.operator&&(expression2)) ...

// when operator&& is a和记娱乐AG手机版

// member function

if (operator&&(e和记娱乐AG手机版xpression1, expression2)) ...

// when operator&& is a

// global function

这似乎没有什么不合,然则函数调用法与简短求值法是绝对不合的。首先当函数被调用时,必要运算其所有参数,以是调用函数functions operator&& 和 operator||时,两个参数和记娱乐AG手机版都必要谋略,换言之,没有采纳简短谋略法。第二是C++说话规范没有定义函数参数的谋略顺序,以是没有法子知道表达式1与表达式2哪一个先谋略。完全与具有从左参数到右参数谋略顺序的简短谋略法相反。

您可能还会对下面的文章感兴趣: