书上“()”优先级大于“++”
现在还不太会调试。
追答哦,没事,可以去找找相关资料,或者问问技术牛的同学
我的编译环境是VC++6.0 x初值为1 求得前者y值为9,后者y值为6。我再试试
追答我也是初始值给的1.
测试代码:
#include
int main (void)
{
int x=1,y=1;
printf("++x*++x=%d\n(++y)*(++y)=%d\n",++x*++x,(++y)*(++y));
getchar();
return 0;
}
输出结果都是9.
不好意思,我忘记一条,x是float型的,我刚才试了,如果是Int型结果就一样,能告诉我这是为什么吗?
追答你可以去深入关心一下编译原理这门课。
其实同样的一个语句,不同的编译器展开优化是不同的。同一编译器不同版本也会有差别。
建议不要研究这些复杂的逻辑很绕人的语句,其实教材包括一些大学老师有些误导人,编写很多复杂的运算组合,让人分析结果理解运算优先级关系什么的没有太大的价值。实际编程是很反对用些复杂的运算表达式,而是要易懂易维护的语句,语言的目标实现算法,