a+=a*=a/=a-6 求a
前面我给a赋值10能算出来8,但如果给a赋值20那从右往左a=a/(a-6)=20/14=1a*=1*1=1a+=1+1=2我这样算有问题吗?问题出在哪(我是自学然后不太...
前面我给a赋值10能算出来8,但如果给a赋值20 那从右往左 a=a/(a-6)=20/14=1 a*=1*1=1 a+=1+1=2 我这样算有问题吗?问题出在哪 (我是自学然后不太懂 望大神们指点一下)
展开
2017-09-06
展开全部
-的优先级较高,+=、*=、/=的优先级相等,较低,而且是右结合的。所以等效语句如下:
a = a / (a - 6);
a = a * a;
a = a + a;
在gcc下输入10,结果是8,与上面的代码相符,VC2008下也是8。
-------------------------------------------------------------
PS:如果a是int的话每次都要向下取整
第一次a = a / (a - 6) = 10 / 4 = (int)2.5 = 2
第二次a = a * a = 2 * 2 = 4
第三次a = a + a = 8
如果是float或者double就没这个步骤了
a = a / (a - 6);
a = a * a;
a = a + a;
在gcc下输入10,结果是8,与上面的代码相符,VC2008下也是8。
-------------------------------------------------------------
PS:如果a是int的话每次都要向下取整
第一次a = a / (a - 6) = 10 / 4 = (int)2.5 = 2
第二次a = a * a = 2 * 2 = 4
第三次a = a + a = 8
如果是float或者double就没这个步骤了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询