当前位置: 首页 > 面试题库 >

带替换的后增量

袁鹤轩
2023-03-14
问题内容

我已经在这里有一个问题了,但我想将其扩展为示例

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)

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

回答351,但回答为353


问题答案:

不要将
评估顺序


优先

顺序
混淆。

评估顺序指出 操作数 始终 从左到右 执行。

优先级指出*/ 运算符+和之前应用-,除非被括号覆盖。

因此,您的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 = 6
13        + 340            a = 68   b = 6
353                        a = 68   b = 6

如您所见,b++确实有一个作用:执行表达式b 的值。



 类似资料:
  • 我正在尝试使用声明列表为RabbitMQ配置铲子插件。我已将远程exchange配置为在创建时具有备用exchange。 我的问题是,我无法让slot的配置文件包含这个参数,所以RabbitMQ在启动时崩溃。 这是我的配置的样子: 问题出在名为my-exchange-topic的目的交换上。如果我去掉声明部分,那么配置文件就工作了。 这是错误: =INFO REPORT==== 31-Jul-20

  • 我正在处理一个大的csv文件,其中的字段用双引号括起来,其中的文本描述包含未替换的双引号,我需要用转义的双引号替换。我尝试过使用以下正则表达式:

  • 问题内容: 我有一个日期格式为201201、201202、201203等的列。 这是一个财务数据库,因此存在期间13;但是,期间12和13合并用于报告目的。 当最后两个字符为13时,如何将其替换为12? 我开始与 但是,当然,这与2013年这一年相去甚远。 感谢收到所有建议。 问题答案: 在这种情况下,您可以使用Substring: 这是否适合您,还是您需要在过去或未来几年采用更具活力的方法?

  • 所以我有这样的代码: 如你所见,如果我按“A”,它将用“E”代替“A”。但这就像多米诺骨牌效应:它现在检测“e”,并将其替换为“i”,以此类推,直到它得到“y”。我如何防止这种情况? 注意:我不擅长regex所以请试着解释一下。

  • Git 对象是不可改变的,但它提供一种有趣的方式来用其他对象假装替换数据库中的 Git 对象。 replace 命令可以让你在 Git 中指定一个对象并可以声称“每次你遇到这个 Git 对象时,假装它是其他的东西”。 在你用一个不同的提交替换历史中的一个提交时,这会非常有用。 例如,你有一个大型的代码历史并想把自己的仓库分成一个短的历史和一个更大更长久的历史,短历史供新的开发者使用,后者给喜欢数据

  • 我正在寻求帮助,我正在制定的代码,我希望它取代最后两个字母。我正在编写一个程序,它将: 将四个字母的单词替换为“FRED” 将以“ed”结尾的单词的最后两个字母替换为“id” 最后,如果单词以“di”开头,请将前两个字母替换为“id” 我对第二条规则有困难,我知道对于数字3,我可以使用replaceFirst();并使用长度作为第一条规则,但我不确定如何具体交换字符串中的最后两个字符。 以下是我目