C - Code::Blocks 13.12:哪一个可以正常工作,或者两者都可以?两者有区别吗?还是C标准允许的?

标签 c casting increment

示例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 仅递增一次。

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

关于C - Code::Blocks 13.12:哪一个可以正常工作,或者两者都可以?两者有区别吗?还是C标准允许的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579370/

相关文章:

xslt - 如何在 xslt 中控制 boolean 渲染

javascript - js中数组从零开始递增

c - execvp() 不处理写入输出 >filename.log

c - 在 iOS 设备上编写和访问应用程序文件

c# - 类型转换盒装字节

java - 如何获取属于超出范围的字节的值?

java - 递增线程名称

c++ - C 和 C++ 关于++ 运算符的区别

c - -Wcast-qual : cast discards ‘__attribute__((const))’ qualifier from pointer target type

c - 将数据从struct读取到二维数组c中