若有定义int a =10,则表达式a+=a-=a*=a的值是多少啊
7个回答
展开全部
a+=a-=a*=a的值为0
解析:
左结合:先做a*=a, 因为a=10,a*=可写为a=a*a=100 此时a的值为100
a-=a 可写为a=a-a=0,此时a 的值为0
a+=a可写为a=a+a=0
综上:a+=a-=a*=a的值为0
扩展资料:
左结合性和右结合性:
C语言中各运算符的结合性分为两种:左结合性和右结合性。
例如:算术运算符的结合性是自左至右,即先左后右。
如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。
而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。
C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。(上文的优先级有分辨左右结合性)
参考资料来源:百度百科-运算符
展开全部
#include <stdio.h>
int main()
{
int a=10;
a+=a-=a*=a;
printf("%d\n",a);
}
显示的答案是 0; 连续赋值 的规则 是从右到左~
我们分细点
1: a+=a-=a*=10
2: a+=a-=100
3: a+=0
4: a=0
所以答案是 0
LZ 明白了吗~~
int main()
{
int a=10;
a+=a-=a*=a;
printf("%d\n",a);
}
显示的答案是 0; 连续赋值 的规则 是从右到左~
我们分细点
1: a+=a-=a*=10
2: a+=a-=100
3: a+=0
4: a=0
所以答案是 0
LZ 明白了吗~~
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
-80。
我想的是,从左往右算,那么左边的a的值是10不会变的。所以就变成了
10+=10-=10*=10
10+=10-=100
10+=-90
-80
嗯嗯,应该没错。
我想的是,从左往右算,那么左边的a的值是10不会变的。所以就变成了
10+=10-=10*=10
10+=10-=100
10+=-90
-80
嗯嗯,应该没错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
表达式a+=a-=a*=a的值=0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询