这是我的第一篇文章,我知道也有类似的文章发布。。。。我知道++ i和i ++的区别
我在求职面试中遇到一个问题: “我的价值是什么?”
int test(){
int i = 0;
try {
return i++;
} finally {
return ++i;
}
}
根据我在上面写的内容,我认为应该为1。但是在某些测试应用中对其进行检查后,我知道它是2。所以我的问题是:为什么?
当我玩了一点并且用i ++切换了++ i
int test(){
int i = 0;
try {
return ++i;
} finally {
return i++;
}
}
在这种情况下,i的值是预期的1。那为什么呢?
答案 0 :(得分:0)
总是执行的finally块包含return语句时,该方法将返回finally块返回的内容。
因此,在第一种情况下,try块中的return i++
递增i
到1,但不返回,而final块中的return ++i
递增{{1 }}到2,并返回该递增值(因为它是一个预递增运算符)。
如果交换运算符,则try块中的i
递增return ++i
到1,但不返回,而final块中的i
递增{{1} }设为2,但返回该增量之前的值-1(因为它是后增量运算符)。
换句话说,返回的值不取决于try块包含return i++
还是i
。这仅取决于finally块包含++i
还是i++
。