C语言中:y=++x*++x与y=(++x)*(++x)为何结果不同?

x定义为float型,初值为1时,前者的y为9,后者为6.
2025-03-10 00:29:36
推荐回答(5个)
回答1:

如果你没打错,结果是一样的;
程序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了。

回答2:

这是一个运算符号优先级的问题:‘ ++ ’ > ‘()’ > ‘ * ’。
所以:y=++x*++x相当于y=x*(x+1),y=(++x)*(++x)相当于y=(x+1)*(x+2)。

回答3:

这个就涉及到优先级的关系啦。这不带括号和带括号的优先级应该是不一样的。你可以再C语言程序运行过程中调试哦。

回答4:

.. 楼主你是把两个句子一起执行了么 那肯定不一样 前面的计算会影响后面的结果的

回答5:

我测试的结果是++x*++x和(++x)*(++x)计算结果相同。
编译环境是VS2005.