4个回答
展开全部
这个问题其实是编译器的一个漏洞,是运算符的副作用,不同的编译器结果往往是不同的
我的vc6.0里执行出来是9,它应该是先a自加了,又自减了,于是最后是b=3*3=9,这个是跟编译器对运算符优先级设置的问题
一般编程的是候要避免这个问题,尤其是一个语句里尽量不要出现这种同一个变量++或--出现两次的情况
我的vc6.0里执行出来是9,它应该是先a自加了,又自减了,于是最后是b=3*3=9,这个是跟编译器对运算符优先级设置的问题
一般编程的是候要避免这个问题,尤其是一个语句里尽量不要出现这种同一个变量++或--出现两次的情况
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好吧,我看错了。
重来:这不是编译器问题。
顺序是b=((++a)*(--a));
执行顺序是
++a
--a
b = a*a。
所以你看到结果是a*a
重来:这不是编译器问题。
顺序是b=((++a)*(--a));
执行顺序是
++a
--a
b = a*a。
所以你看到结果是a*a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同wmn318
编译器的问题会使结果不一样
如果想知道它在你所用的编译器中怎么实现的话,可以自己调试一下
在我这里好像是先++a,在--a,然后把值分别给表达式相乘
编译器的问题会使结果不一样
如果想知道它在你所用的编译器中怎么实现的话,可以自己调试一下
在我这里好像是先++a,在--a,然后把值分别给表达式相乘
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询