C - Code::Blocks 13.12: 哪一个可以正常工作,或者两者都可以?两者有区别吗?或者它在 C 标准中是允许的?
C - Code::Blocks 13.12: Which one will work fine, or both? Is there a difference between both? Or it is allowed in C standard?
示例 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 是 'float')
int n=(int)x; //normal cast
printf("x! = %.0lf\n",ftr(n));
或
printf("x! = %.0lf\n",ftr((int)x)); //directly cast inside function parameters
t+=npw(x,i++)/ftr(i++);
可能不会做任何你期望它做的事情,因为这两个增量操作的执行顺序是未指定的。 IE。您不知道哪个函数将获得递增的 i
,以及哪个函数将获得递增的 递增的 i
作为参数。
此外,无论i
先递增哪个,它都将与之前的代码完全不同,其中i
只递增一次。
其他示例看起来正确。最后两段代码仅在语义上有所不同。
示例 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 是 'float')
int n=(int)x; //normal cast
printf("x! = %.0lf\n",ftr(n));
或
printf("x! = %.0lf\n",ftr((int)x)); //directly cast inside function parameters
t+=npw(x,i++)/ftr(i++);
可能不会做任何你期望它做的事情,因为这两个增量操作的执行顺序是未指定的。 IE。您不知道哪个函数将获得递增的 i
,以及哪个函数将获得递增的 递增的 i
作为参数。
此外,无论i
先递增哪个,它都将与之前的代码完全不同,其中i
只递增一次。
其他示例看起来正确。最后两段代码仅在语义上有所不同。