永发信息网

C语言中: a+=a-=a*a 这个错在哪里? 为什么?求详解。 期待高手回答~

答案:6  悬赏:80  手机版
解决时间 2021-03-05 17:53
  • 提问者网友:捧腹剧
  • 2021-03-04 18:53
首先 这个表达式在 编译的时候是能够通过 的(VC++2008),但是这个表达式其实是不正确的 ,但是到底错在什么地方 我目前还不知道 期待有高手能回答~
最佳答案
  • 五星知识达人网友:詩光轨車
  • 2021-03-04 19:45
这样写没有错啊,我在哪里好像见到过这样的题。
a= 3
a+=a-=a*a;
问此时a的值。

其实以上等价于
int a,b;
a= 3;
b = a*a;
a = (a-b);
a = a+a;
所以a值为-12.
全部回答
  • 1楼网友:你哪知我潦倒为你
  • 2021-03-05 02:35
if (a>='A'||a<='Z')改成:if (a>='A'&&a<='Z')
  • 2楼网友:青灯有味
  • 2021-03-05 01:21
这好像是计算机二级的一道选择题吧,从右往左执行推出来就行,实际程序中不会这么用的 a+=(a-=(a*a))=2*(a-a*a)
  • 3楼网友:摆渡翁
  • 2021-03-04 23:52
你好! a += a -= a*a; 这样写是没错的,注意到+和=之间不能有空格,否则就不能通过编译,同样,-和=之间也不能有空格,这是因为+=、-=、*=、/=等是一个整体。 如有疑问,请追问。
  • 4楼网友:十年萤火照君眠
  • 2021-03-04 22:45
不知道你说的错误是什么意思,语法是没有错误的。可以分解成下面这样; int j; j = a * a; a -= j; a += a;
  • 5楼网友:大漠
  • 2021-03-04 21:05
1.将a-a*a的值赋给a。 2.将a+a的值再赋给a。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯