C语言中:y=++x*++x与y=(++x)*(++x)为何结果不同?
展开全部
如果你没打错,结果是一样的;
程序1如下:
# include <stdio.h>
main()
{
int x=5;
int a;
a=(++x)*(++x);
printf("%d",a);
}
程序2如下:
# include <stdio.h>
main()
{
int x=5;
int a;
a=++x*++x;
printf("%d",a);
}
运行结果完全一样,都是49;
程序3如下:
# include <stdio.h>
main()
{
int x=5;
int a;
a=(++x)*(++x);
printf("%d",a);
a=++x*++x;
printf("%d",a);
}
这样写的话,结果就不一样,因为在执行a=++x*++x前,x的值已经不是5,而是7了。
程序1如下:
# include <stdio.h>
main()
{
int x=5;
int a;
a=(++x)*(++x);
printf("%d",a);
}
程序2如下:
# include <stdio.h>
main()
{
int x=5;
int a;
a=++x*++x;
printf("%d",a);
}
运行结果完全一样,都是49;
程序3如下:
# include <stdio.h>
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)。
所以:y=++x*++x相当于y=x*(x+1),y=(++x)*(++x)相当于y=(x+1)*(x+2)。
追问
书上“()”优先级大于“++”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-08-19 · 知道合伙人软件行家
关注
展开全部
这个就涉及到优先级的关系啦。这不带括号和带括号的优先级应该是不一样的。你可以再C语言程序运行过程中调试哦。
追问
现在还不太会调试。
追答
哦,没事,可以去找找相关资料,或者问问技术牛的同学
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
.. 楼主你是把两个句子一起执行了么 那肯定不一样 前面的计算会影响后面的结果的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我测试的结果是++x*++x和(++x)*(++x)计算结果相同。
编译环境是VS2005.
编译环境是VS2005.
更多追问追答
追问
我的编译环境是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.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询