如果你没打错,结果是一样的;
程序1如下:
# include
main()
{
int x=5;
int a;
a=(++x)*(++x);
printf("%d",a);
}
程序2如下:
# include
main()
{
int x=5;
int a;
a=++x*++x;
printf("%d",a);
}
运行结果完全一样,都是49;
程序3如下:
# include
main()
{
int x=5;
int a;
a=(++x)*(++x);
printf("%d",a);
a=++x*++x;
printf("%d",a);
}
这样写的话,结果就不一样,因为在执行a=++x*++x前,x的值已经不是5,而是7了。
这是一个运算符号优先级的问题:‘ ++ ’ > ‘()’ > ‘ * ’。
所以:y=++x*++x相当于y=x*(x+1),y=(++x)*(++x)相当于y=(x+1)*(x+2)。
这个就涉及到优先级的关系啦。这不带括号和带括号的优先级应该是不一样的。你可以再C语言程序运行过程中调试哦。
.. 楼主你是把两个句子一起执行了么 那肯定不一样 前面的计算会影响后面的结果的
我测试的结果是++x*++x和(++x)*(++x)计算结果相同。
编译环境是VS2005.