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

++ Var和Var ++之间的区别

卢承弼
2023-03-14
问题内容

在编程中,尤其是在Java中,两者之间有什么区别?

int var = 0;
var++;

int var = 0;
++var;

这会对for循环产生什么影响?

例如

for (int i = 0; i < 10; i++) {}

for (int i = 0; i < 10; ++i) {}

问题答案:

tldr;

尽管var++++var都会使它们所应用var++的变量递增,但是by ++var所返回的结果是递增之前的变量值,而by
所返回的结果就是应用递增之后的变量值。

进一步说明

++varvar++形成完整的语句时(如您的示例),两者之间没有区别。例如以下

int x = 6;
++x;
assert x == 7;

等同于

int x = 6;
x++;
assert x == 7;

但是,当++varvar++用作较大语句的一部分时,两者可能不相等。例如,以下断言通过

int x = 6;
assert ++x == 7;

而这一失败

int x = 6;
assert x++ == 7;

尽管var++++var都会使它们所应用var++的变量递增,但是by ++var返回的结果是递增之前的变量值,而by
所返回的结果就是应用递增之后的变量值。

for循环中使用时,两者之间没有区别,因为变量的增加不构成较大语句的一部分。它可能不会这样显示,因为源文件的同一行上还有其他代码。但是,如果仔细观察,您会发现;在增量之前紧接一个,之后没有任何东西,因此增量运算符不构成较大语句的一部分。



 类似资料:
  • 问题内容: 我在此阅读了bash手册页,但我不了解其中的区别。我对它们进行了测试,它们似乎产生了完全相同的结果。 如果未通过命令行参数设置值,我想设置变量的默认值。 上面的代码回显if 为null并回显if不为null的值。这样: 根据Bash手册页, 使用默认值。如果参数未设置或为null,则替换单词的扩展名。否则,将替换参数的值。 分配默认值。如果参数未设置或为空,则将单词扩展指定给参数。然后

  • 本文向大家介绍C#中var和dynamic之间的区别,包括了C#中var和dynamic之间的区别的使用技巧和注意事项,需要的朋友参考一下 我们知道,任何语言的编程都以声明变量开始,然后对其进行定义和逻辑实现。因此,最重要的因素之一就是知道在开始用任何编程语言声明变量之前如何对其进行编码。 现在,如果我们使用C#语言的实例,则变量的声明会随着语言的发展而变化。与以前的C#版本一样,所有编写的代码都

  • 本文向大家介绍javascript定义变量时有var和没有var的区别探讨,包括了javascript定义变量时有var和没有var的区别探讨的使用技巧和注意事项,需要的朋友参考一下 我们先来看一段代码 有过C++或Java编程经验的人可能会说:“这程序,死定了,变量竟然在引用了该变量的函数后边定义,bug会灭掉你的。”放在浏览器上运行一下,结果怎样?完美运行!接下来我们就说一下这是咋回事——有v

  • Kotlin中的和有什么区别? 如本链接所述: 只读属性声明的完整语法与可变属性声明的不同之处在于两个方面:它以val而不是var开头,并且不允许setter。 但就在前面有一个使用setter的示例。 为什么我们两者都需要? 这不是Kotlin中变量的重复,与Java的区别:“var”vs.“val”?因为我询问的是与文档中的特定示例相关的疑问,而不仅仅是一般性的疑问。

  • 苹果Swift语言中的和有什么区别? 在我的理解中,它是一种编译语言,但它不会在编译时检查类型。这让我很困惑。编译器如何知道类型错误?如果编译器不检查类型,难道不是生产环境的问题吗?

  • 假设我有一个这样的设置: IntelliJ为中的: lateinit变量覆盖lateinit变量 伊伊伊..?来吧,你的观点是什么? 我最终意识到我的在中确实应该是一个,而不是-它消除了警告-但即便如此,我还是想知道…是否有关于覆盖的内容,我应该知道但不知道,IntelliJ想告诉我但没有?