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

b = b ++和b ++之间的区别

彭畅
2023-03-14
问题内容

在采访中有人问我以下问题。

int b = 0;
b = b++;
b = b++;
b = b++;
b = b++;

每行执行一次后b的值是多少?每行输出为0。

为什么输出不为0、1、2、3?


问题答案:

在Java中,表达式

b = b++

相当于

int tmp = b;
b = b + 1;
b = tmp;

因此,结果。

(在其他一些语言中,完全相同的表达式具有未指定的行为。请参见未定义的行为和顺序点。)



 类似资料:
  • 问题内容: 我目前正在尝试了解在自定义类上使用和之间的区别。有许多网站说使用’+’运算符会导致使用特殊方法-到目前为止还不错。 但是,当我运行以下示例时,我得到两个不同的结果。 结果: 现在,据我了解,执行Python时检查/执行int方法-发现没有实现添加int和C对象的实现-返回NotImplemented- 这使Python知道检查对象C并执行其中的代码。 为什么执行代码会导致结果,但是其他

  • 问题内容: 这是我的第一个问题,我开始学习Python。之间有什么区别: 和 在下面的示例中编写时,它显示不同的结果。 和 问题答案: 在中,在将右侧的表达式赋给左侧之前对其求值。因此,它等效于: 在第二个示例中,运行时已更改的值。因此,结果是不同的。

  • 一、概念 Binary Tree(二叉树):二叉树的每个节点最多有两个子节点 Binary Search Tree(二叉搜索树):二叉搜索树每个节点只存储一个键值,并且左子树(如果有)所有节点的值都要小于根节点的值,右子树(如果有)所有节点的值都要大于根节点的值。 B-Tree(Balanced Tree):也就是今天要说的B-树,这里的-不是minus的意思,而是作为连接符的横杠,而我们也经常把

  • 我尝试了一些代码在Java中交换两个整数,而不使用第三个变量,即使用XOR。 以下是我尝试的两个交换函数: 该代码产生的输出如下: 我很想知道,为什么会有这样的说法: 和这个不一样?

  • 问题内容: 正如我在标题中提到的 a + = b和a = + b以及a 和 a有什么区别?我有点困惑 问题答案: 相当于 相当于 且两者都增加1。不同之处在于,返回的是增量之前的值,而返回的是增量之后的值。 那是:

  • 问题内容: 我尝试了一些代码,使用XOR在Java中交换两个整数而不使用第三个变量。 这是我尝试的两个交换函数: 这段代码产生的输出是这样的: 我很好奇,为什么这样说: 与这个不同吗? 问题答案: 问题是评估的顺序: 参见JLS第15.26.2节 首先,对左操作数求值以产生一个变量。 如果该评估突然完成,则赋值表达式由于相同的原因而突然完成;右边的操作数不会被评估,并且不会发生赋值。 否则,将保存