带替换的后增量

我已经在这里提出了一个问题,但我想将其扩展为带有示例的增量


char a = 'D';

int b = 5;

System.out.println(a++/b+--a*b++);

作为该问题的答案之一是:


(68 / 5) + (68 * 5) 和b ++对此没有影响。


我的疑问是,如果b ++不起作用,那么为什么a ++起作用?理想情况下应该


步骤1: (68/b+--a*b++);


现在a = 69;


第2步: (68/b+--a*5)


现在a = 69; b = 6;


第三步: (68/b+68*5)


第四步: (68/6+68*5)


回答351,但得到的答案是353


梵蒂冈之花
浏览 146回答 2
2回答

白衣非少年

不要将评估顺序与优先顺序混淆。评估顺序指出操作数始终从左到右执行。优先级指出*和/ 运算符在+和之前应用-,除非被括号覆盖。所以,你说得对,a++/b+--a*b++手段(a++ / b) + (--a * b++)。这是优先事项。由于数字运算符将值提升为int(在这种情况下),所以您也说对了,这char a = 'D'是对的int a = 68。所以:(a++ / b) + (--a * b++)    a = 68   b = 5(68  / b) + (--a * b++)    a = 69   b = 5(68  / 5) + (--a * b++)    a = 69   b = 5(68  / 5) + (68  * b++)    a = 68   b = 5(68  / 5) + (68  * 5  )    a = 68   b = 613        + 340            a = 68   b = 6353                        a = 68   b = 6如您所见,b++确实有一个作用:执行表达式b 后的值。

潇湘沐

步骤4:(68/6 + 68 * 5)这是您的错!b在计算中的所有位置均为5,而不是其值6。所以我们有:步骤4:(68/5 + 68 * 5)=(13 + 340)= 353
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java