社区
Java SE
帖子详情
int a=6; a+=a-=a*a++;
weixin_45827460
2019-12-28 11:47:58
int a=6; a+=a-=a*a++;如题,我算出来是-70,但是用eclipse算出来是-24???有没有大佬解释下?
...全文
346
10
打赏
收藏
int a=6; a+=a-=a*a++;
int a=6; a+=a-=a*a++;如题,我算出来是-70,但是用eclipse算出来是-24???有没有大佬解释下?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
敲出亿行bug
2020-01-06
打赏
举报
回复
因为++ 的优先级低所有先运++左边的 根据代码规律从左到右 先是6*6 --》 6-36 --》6+(-24)
卿文天
2020-01-06
打赏
举报
回复
a++或者++a的运算应该是取值的时候进行的一个不可分割的操作,即a++ 是先取了a的值立即运算了一次a=a+1;而++a是在取值时立即进行了a=a+1再返回取值。
天行归来
2019-12-30
打赏
举报
回复
参考一篇运算符总结文章 https://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html 另外,实际测试: a+=a++ => a = a+a , ++其实没有影响运算 a+=a-=a*a++ 运算过程: 1、a*a++ => a*a = 36; 2、a-=a*a => a = a-a*a = 6-36 = -30; 3、a+=-30 => a = a-30 = 6-30 =-24;
dkwuxiang
2019-12-30
打赏
举报
回复
引用 3 楼 庸俗的情怀 的回复:
因此他的输出是-24而执行后他实际值是-23
怎么也得自己运行下,再发表评论吧,再不行,发布评论后,自己也得运行一下吧,解释的什么
weixin_45827460
2019-12-29
打赏
举报
回复
还是说java运算跟c语言运算不一样?
IT_熊
2019-12-29
打赏
举报
回复
考试笔试最喜欢考这个
qybao
2019-12-29
打赏
举报
回复
先求表达式6+=6-=36的值,最后执行a++,即a变为7 而表达式的值不管从左算还是从右算都是-24(至于是从左算还是从右算,可以用javap反编译看看伪代码就知道了)。
三仙半
2019-12-29
打赏
举报
回复
这个题目我是真不知道结果,因为,我不愿意研究这样的题目,我总觉得如果是我自己写代码,我不会写这样的代码,这样的代码可读性太差了,如果是别人写的代码,我输出一下,知道结果就行了。运算符的优先级确实需要了解一些,自己写代码的话,还是用括号把运算顺序显式的标志出来,或者分行书写,更合理一些。
个人观点,勿喷,嘿嘿。。。。。
Modify_QmQ
2019-12-29
打赏
举报
回复
因此他的输出是-24而执行后他实际值是-23
Modify_QmQ
2019-12-29
打赏
举报
回复
首先将a带入进去, a+=a-=a*a++ 就变成了6+=6-=6*6++ 先乘除后加减, 6+=6-=36++ 从左至右运算,6+=6等价于6+6 =12 再12-=36 等价于12-36 =-24 -24++结果应该是-23怎么又输出了-24 这个时候就要注意i++和i=i+1的区别了,i++是将i的值传给前者,也就是要输出的那个变量,最后在执行++操作(即+1)
c语言中a*=2*a 1,c语言中
int
a=2;a+=a*=a-=a*=3;pr
int
f("%d",a);怎么做?详细过程
题目:c语言中
int
a=2;a+=a*=a-=a*=3;pr
int
f("%d",a);怎么做?详细过程解答:首先a赋值为2;然后计算a*=3,此时a为6;然后计算a-=6,此时a为0;然后计算a*=0,此时a为0;然后计算a+=0,此时a为0.最后输出a为0.另外,只有C语言的考试会编这样晦涩难懂易出错的语句,实际工作应用中请不要这么做.猜你喜欢:1.双绒毛膜囊双羊膜囊s是什么意思?胎芽是什么?...
c语言基本运算符问题 *a
++
= *b
++
*a
++
是先执行
++
运算,再执行 *, 即指针先移动一个位置,在对移动后指针所指位置解引用取值。 前置运算: 举例:
++
a=
++
b; 执行顺序是: a=a+1; b=b+1; a=b;后置运算: 举例:a
++
=b
++
; a=b; a=a+1; b=b+1; 再回到上面的问题:*a
++
=*b
++
; 执行顺序是: *a; *b; *a=*b; a
++
; b
++
; …… while (n-- && (*target2
++
= *target1
++
) != '\0')
int
a=5;a+=a-=a*a;求a最终的值?
要知道,赋值运算符的性质为从右到左。 因此在计算的时候顺序应该如下: a-=aa 即 a = a - aa = 5 - 5*5 = -20 接着再算: a+=a- 即 a = a + a- = -20 + (-20) = -40
求Sn=a+a*a+a*a*a+a*a*a*a+.......,其中a是一个数字,n表示n的位数
//求Sn=a+a*a+a*a*a+a*a*a*a+.......,其中a是一个数字,n表示n的位数 #include <stdio.h>
int
main() {
int
a,n,i,sum,b; pr
int
f("请输入a与n的值:\n"); scanf("%d %d",&a,&n); sum = a; b = a; for(i = 1;i &...
b = a += a -= a *= a
++
及c = b *= b += b += --b运算解析
. java 对于基本数据类型的赋值是很简单的,基本数据存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到另外一个地方。
Java SE
62,630
社区成员
307,263
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章