C-代码::块13.12:哪一个可以正常工作,或者两者都可以?两者之间有区别吗?或者在C标准中是允许的



示例1:

while(npw(x,i)/ftr(i)>0.00001) {
  t+=npw(x,i)/ftr(i);
  i++;                    //normal increase i
}

while(npw(x,i)/ftr(i)>0.00001)
  t+=npw(x,i++)/ftr(i++); //increase i inside function's parameters

示例2:(x是"浮动")

int n=(int)x;                     //normal cast
printf("x! = %.0lfn",ftr(n));

printf("x! = %.0lfn",ftr((int)x)); //directly cast inside function parameters

t+=npw(x,i++)/ftr(i++);

可能不会执行您期望它执行的任何操作,因为两个增量操作的执行顺序未指定。也就是说,您不知道哪个函数将获得递增的i,哪个函数将得到递增的i作为参数。

此外,无论哪个i先递增,它都将与前一段代码完全不同,其中i只递增一次。

其他的例子看起来是正确的。最后两段代码仅在语义上不同。

最新更新