c语言三个减号一起是什么,java中三个加号(减号)的程序阅读题,你能做对吗?...

一、

int m1=10,m2=10,m3=8;

m3 *= m1+++m2;

System.out.println("m3:" + m3);

二、

int t = testM(10);

System.out.println("testM:" + t);

private int testM(int m) {

//System.out.println("testm:" + m);

if(1 > m)

return 0;

else

return m---testM(m);// 如果改成m-(--testM(m))呢

}

请大家想下运行的过程以及可能的结果

一、m3:160

解析:1)单目运算符优先级高于双目运算符

2)++运算符从左到右结合

m3 *= (m1++)+m2;//运算后m1的值是11了

m3 *= 20;

m3 = 8*20 = 160

错误理解:

1)m3 *= m1+(++m2);// 这样算出168

2) (m3*=m1++)+m2;//错误The left-hand side of an assignment must be a variable

3)(m3*=m1)+++m2;//错误1Invalid argument to operation ++/--,错误2Syntax error on token "+", invalid AssignmentOperator

二、testM:5

解析:原理和第一题一样

(m--)-testM(m);

testM(10) = 10 - testM(9) = 5

testM(9) = 9 - testM(8) = 5

testM(8) = 8 - testM(7) = 4

testM(7) = 7 - testM(6) = 4

testM(6) = 6 - testM(5) = 3

testM(5) = 5 - testM(4) = 3

testM(4) = 4 - testM(3) = 2

testM(3) = 3 - testM(2) = 2

testM(2) = 2 - testM(1) = 1

testM(1) = 1 - testM(0) = 1

错误理解:

1) m-(--testM(m))// Invalid argument to operation ++/--

2) m-testM(m);//testM(10) = 10 - testM(10) 栈溢出:java.lang.StackOverflowError

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值