专栏中心

EEPW首页 > 专栏 > SC510 3BSE003832R1 参数在应用之前被完全求值

SC510 3BSE003832R1 参数在应用之前被完全求值

发布人:15359029662 时间:2023-03-29 来源:工程师 发布文章

SC510 3BSE003832R1  参数在应用之前被完全求值

SC510 3BSE003832R1  参数在应用之前被完全求值

计算顺序主要在代码中可见副作用,但它也会影响代码的性能,因为严格的顺序会抑制指令调度。由于这个原因,尽管Java和C#等语言将求值顺序定义为从左到右,但C++等语言标准通常不指定顺序[8]: 240–241C++17标准增加了对评估顺序的限制。[19]

严格评估 [编辑]

适用顺序是一系列求值顺序,在这些顺序中,函数的参数在应用之前被完全求值。[20]这具有使函数严格的,即如果任何参数未定义,则函数的结果也未定义,因此应用顺序评估更常被称为严格评估。此外,一旦在过程中遇到函数调用,就会立即执行它,因此它也被调用热切的评价或者贪婪评估[21][22]一些作者将严格求值称为“按值调用”,因为按值调用绑定策略需要严格求值。[4]

常见的Lisp,埃菲尔和Java从左到右计算函数参数。c不定义顺序。[23]Scheme要求执行顺序是参数的未指定排列的顺序执行。[24] OCaml类似地,不指定顺序,但实际上由于其设计,从右向左计算参数抽象机器[25]这些都是严格的评价。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: SC510 3BSE003832R1
更多 培训课堂
更多 焦点
更多 视频

技术专区