标题:新手上路,请老手指教,谢谢
只看楼主
Celavia
Rank: 2
等 级:论坛游民
帖 子:34
专家分:34
注 册:2010-3-18
结帖率:100%
已结贴  问题点数:20 回复次数:4 
新手上路,请老手指教,谢谢
#include<stdio.h>
main()
{
int a=5,b;b=a+a-=a*a;
printf("%d",b);
}
为什么a+a-换成a才正确,a+a-不能用吗?
搜索更多相关主题的帖子: 指教 老手 
2010-03-19 22:30
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
得分:4 
何必这样用捏
2010-03-19 22:49
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
得分:6 
按符号的优先级来说,应该有 b = (a+a) -= (a*a), a*a的值是赋给(a+a),但(a+a)不是变量,也不是指针,这个值不知道赋给谁,(a+a)是一个无效的左值
2010-03-19 23:08
gtl75008810
Rank: 2
等 级:论坛游民
帖 子:29
专家分:71
注 册:2010-2-2
得分:5 
楼上的已经说到位了~~
2010-03-19 23:30
helper
Rank: 2
等 级:论坛游民
帖 子:2
专家分:11
注 册:2010-3-19
得分:5 
b=a+a-=a*a;
C语言中赋值是从右到左进行的,先计算a*a,再进行计算时就有问题了,下一步计算是进行(a+a)=(a+a)-(a*a)的计算,此时把结果赋给了一个表达式,这在C语言中是非法的,你说对吧!
2010-03-19 23:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-299942-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020016 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved