Board logo

标题: 复合运算应用 [打印本页]

作者: wangyu    时间: 2010-6-6 08:57     标题: 复合运算应用

#include<stdio.h>
main()
{
int a;
printf("please input:\n");
scanf("%d",&a);
a+=a*=a/=a-6;
printf("the result is %d\n",a);
}

a+=a*=a/=a-6  这一复合运算如何运算的呢?请老师举例说明吧,谢谢老师
作者: wangyu    时间: 2010-6-6 09:26

是否有运算优先级的问题呢
作者: fwbook    时间: 2010-6-7 09:12

这个主要复合运算符的优先级。
+= -= *= /=的优先级都非常低,并且遵循的是右结合。所以整个表达式最先计算的是

a/=a-6
假设a=7,则
a/=a-6=a/(a-6)=7
然后运算
a*=a/=a-6=a*(a/=a-6)=7*7=49
最后运算
a+=a*=a/=a-6=a+(a*=a/=a-6)=49+49=98
作者: wangyu    时间: 2010-6-7 10:39

谢谢老师的回答
作者: fwbook    时间: 2010-6-7 15:02

实际通常不会这样使用。因为这样不容易理解。




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0