c)"是如何工作的?-6ren"> c)"是如何工作的?-我正在尝试将另一位作者的一些 C 代码重写为 Igor Pro(与 C 类似的表示法)。代码可用here . 我不知道如何处理这些行if ((umin+=input[k+1]-vmin)lambda)-6ren">
gpt4 book ai didi

C: "if((a+=b) > c)"是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 00:31:29 26 4
gpt4 key购买 nike

我正在尝试将另一位作者的一些 C 代码重写为 Igor Pro(与 C 类似的表示法)。代码可用here .

我不知道如何处理这些行if ((umin+=input[k+1]-vmin)<minlambda)else if ((umax+=input[k+1]-vmax)>lambda)关于他们如何进行更新的顺序 uminumax ,以及 if/elseif 语句评估为 true 或 false 如何影响更新..

具体:

第 99-107 行有:

        if ((umin+=input[k+1]-vmin)<minlambda) {        
do output[k0++]=vmin; while (k0<=kminus);
vmax=(vmin=input[kplus=kminus=k=k0])+twolambda;
umin=lambda; umax=minlambda;
} else if ((umax+=input[k+1]-vmax)>lambda) {
do output[k0++]=vmax; while (k0<=kplus);
vmin=(vmax=input[kplus=kminus=k=k0])-twolambda;
umin=lambda; umax=minlambda;
} else { /*blah blah */ }

我已将其重构为:

    if ((umin+=input[k+1]-vmin) < minlambda) //Todo
do
output[k0] = vmin
k0+=1
while(k0 <= kminus)

k=k0
kminus=k
kplus=kminus
vmin=input[kplus]
vmax = (vmin) + twolambda
umin = lambda
umax = minlambda

elseif ((umax+=input[k+1]-vmax) > lambda) //Todo
do
output[k0]=vmax
k0+=1
while(k0 <= kplus)

k=k0
kminus=k
kplus=kminus
vmax=input[kplus]
vmin = (vmax) - twolambda
umin = lambda
umax = minlambda
else //blah blah

umin 和 umax 仅当其 if 语句计算结果为 true 时才会更新吗?或者它会级联吗? IF(umin) -> false,umin 更新,ELSEIF(umax) -> true,umax 更新,但是 IF(umin) -> true,umin 更新,umax 未更新?或者其他一些变体?

Another question大约相同的代码。

编辑:固定标题。添加了 igor 标签

最佳答案

if( a += b > c)

在此第一个b>c评估为>优先级高于 +=

然后+=将被评估。 现在,如果b>ca 为真将是a+=1如果为假则 a+=0将会被评价。

现在这个(当您更新标题时)-

 if ((umin+=input[k+1]-vmin)<minlambda)  

在此第一个(umin+=input[k+1]-vmin)会被评价。为什么?由于括号()优先级高于 < .

(umin+=input[k+1]-vmin) ,由于 - 的优先级高于+=input[k+1]-vmin进行评估,然后将其结果添加到 umin并存储在 umin .

评估后,将其与 minlamda 进行比较.

类似地,您可以理解这是如何工作的(当然,如果 if 中的条件是 false )-

else if ((umax+=input[k+1]-vmax)>lambda) 

这里还有umax会被更新,然后会与 lambda 进行比较.

关于C: "if((a+=b) > c)"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32712935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com