首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

++ i和i ++有什么区别?

在编程中,i和i++是两个不同的概念。

i表示一个变量,它的值是一个整数。例如,如果我们定义一个整数变量i,并将其值设置为5,那么i就表示数字5。

i++表示将变量i的值增加1。例如,如果我们定义一个整数变量i,并将其值设置为5,然后使用i++,那么i的值将变为6。

因此,i和i++的区别在于,i表示一个变量的值,而i++表示将变量的值增加1。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面试官:i = i++ i = ++i什么区别

出处:blog.csdn.net/qq_44377709/article/details/106643703 写在前面:前些天看完了JVM的内存结构,自以为自己是懂了,心里想想不就是分线程共享线程私有嘛...= 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println(...其中一个方法对应一个栈帧 此题目我们只需要用到栈帧里面的局部变量表操作数栈 2.1、第一步 int i = 1 只是一个简单的赋值操作 2.2、第二步 i = i++ 结果:i还是等于1 2.3、第三步...int j = i++ 结果:i在局部变量表中变成了2,操作数栈中的 i 值为1,并且将 i 的值返回给 j,即此条语句以后,i = 2,j = 1 2.4、第四步 int k = i + ++i *...i++ 结果:局部变量表中的i = 4,k = 11 2.5、结果 3、i = ++i 按理说根据上面的分析过程,再来分析 i = ++i,就很简单了。

1.2K20

【sed学习】sed -ised -i -e什么区别

前言: 项目脚本句sed -i 'aPRODUCT_PACKAGES += rtk_mdnsd' device.mk sed -i -e 'a/vendor/bin/ipv4lld u:object_r...:ipv4lld_exec:s0' sepolicy/file_contexts不太清楚sed -ised -i -e什么区别,学习一下 sed -i sed -i -e 是用于编辑文件中匹配模式的命令...\New line' file.txt 以上示例展示了 sed -i sed -i -e 之间的一些区别,后者可用于更复杂的编辑任务。...请根据具体需求选择适合的命令选项。 学习使用 sed 命令可以帮助你在文本处理中实现强大的编辑转换功能。...学习常见的正则表达式语法以及元字符的含义,可以帮助你更好地理解应用 sed 命令。 阅读文档教程:sed 的官方文档提供了详细的命令说明示例。此外,还有许多在线教程博客文章可供参考。

22710

面试细节: i = i++ i = ++i

一般来说,这个类题,可能会出现在笔试题,还是很高频的~ 如果面试官真的问了,那这个问题还是很细节的,一起看下文吧~ 写在前面:前些天看完了JVM的内存结构,自以为自己是懂了,心里想想不就是分线程共享线程私有嘛...= 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println(...其中一个方法对应一个栈帧 [356e1728-e09d-428f-add1-74be0e912936.png] 此题目我们只需要用到栈帧里面的局部变量表操作数栈 2.1、第一步 int i = 1 [...,再来分析 i = ++i,就很简单了。...; System.out.println(i); // 结果:i = 2 } } `最后的最后:本文的思考过程计算推导仅针对Java语言 ` 微信搜索:【Java小咖秀】更多精彩等着您

1.8K00

你真的了解 i++, ++i i+++++i 以及 i+++i++ 吗?

我想大部分都知道 i++ ++i的区别,i++ 就是先拿i来使用,之后再自增加1,而++i则是先自增加1,在拿i来使用,例如对于下面这两个语句,我敢保证大部分人都会做: int i = 1; System.out.println...不过 i++ ++i 这两个操作,在内部是如何实现的呢?...所以虽然i已经等于2了,但此时栈顶的元素却是i之前的值 1 ,所以打印的是1。 这下关于 i ++ 的懂了吧? 那我们来看看 ++ ii ++ 的汇编指令什么不同。...int i = 1; System.out.println(++i); 对应的部分重点汇编指令如下: //上面i++差不多,不过IINC 1 1 ILOAD 1这两句的顺序调换了。...所以,对于 i++ ++i的区别彻底懂了吧。

1.5K20

终于弄明白 i = i++ i = ++i

个人原创100W+访问量博客:点击前往,查看更多 来源:https://urlify.cn/Abyuyy ---- 写在前面:前些天看完了JVM的内存结构,自以为自己是懂了,心里想想不就是分线程共享线程私有嘛...= 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println(...此题目我们只需要用到栈帧里面的局部变量表操作数栈 2.1、第一步 int i = 1 ? 只是一个简单的赋值操作 2.2、第二步 i = i++ ?...结果:i在局部变量表中变成了2,操作数栈中的 i 值为1,并且将 i 的值返回给 j,即此条语句以后,i = 2,j = 1 2.4、第四步 int k = i + ++i * i++ ?...; System.out.println(i); // 结果:i = 2 } } 最后的最后:本文的思考过程计算推导仅针对Java语言 最后,再附上我历时三个月总结的 Java

1.2K30

你真的了解 i++, ++i i+++++i 以及 i+++i++ 吗?

本文字数:2355字 阅读本文大概需要:6 分钟 我想大部分都知道 i++ ++i的区别,i++ 就是先拿i来使用,之后再自增加1,而++i则是先自增加1,在拿i来使用,例如对于下面这两个语句,...不过 i++ ++i 这两个操作,在内部是如何实现的呢?...所以虽然i已经等于2了,但此时栈顶的元素却是i之前的值 1 ,所以打印的是1。 这下关于 i ++ 的懂了吧? 那我们来看看 ++ ii ++ 的汇编指令什么不同。...int i = 1; System.out.println(++i); 对应的部分重点汇编指令如下: //上面i++差不多,不过IINC 1 1 ILOAD 1这两句的顺序调换了。...所以,对于 i++ ++i的区别彻底懂了吧。

2.1K20

java中 i = i++ j = i++ 的区别

由于i++i--的使用会导致值的改变,所以在处理后置的++--的时候,java的编译器会重新为变量分配一块新的内存空间,用来存放原来的值, 而完成赋值运算之后,这块内存会被释放。...i的原始值存放在后开辟的内存中,最后将这个值赋给j,进行j = i++运算之后,j会得到i的值,而i又将自加,所以,在释放内存之后,原来存放ji的地方将得到的值分别是:j(此时的值等于初始i的值)i...每一次的循环结束,用来保存i的原始值的内存的数据会被销毁,然后i的新的值又会被放在一段新的内存中,在进行上述的循环,所以最终能够实现j的数据的增加。 (2)对于i = i++的情况 ?...扩展: 微软的windows下的visualstudio编译的结果java不同,但在gcc等其他的c语言编译器下,结果java是一样的,千万要注意,由于有些人使用的是c语言的编译器但不是windows...下的编译器,结果仍然java的一致,但在windows下的编译运行结果却不一样,希望能引起读者的注意。

1.2K100

int* iint *i那种更好

需要明确的是int* i与int *i是等价的。对于int* iint *i那种更好,或许每个程序员都会有不同的评判,那个都不为过。   ...int* i-类型与星号贴合   一些人喜欢指针变量int* i;,这样看起来更符合变量与类型之间的关系,因为int*作为单独的类型(整型指针类型)更具有可读性。...int *i-星号与变量贴合   另外一些人喜欢int *i;因为解析器会将星号附加(绑定)到变量,而不是类型。另外在同一行中定义两个变量时,这就体现出它的意义了。...例: int* i, j; 想定义两个整型指针变量却的得到的是: int* i; int j; 显然实际结果不一致。 个人观点   Qt君更倾向于星号与变量贴合的方式。...虽然使用上面哪一种方式都是可以的,但不建议写成以下的方式: int*i; int * i; int * i;

94220

【118期】面试官:你真的清楚 i = i++ i = ++i 的区别吗?

来自:blog.csdn.net/qq_44377709/article/details/106643703 写在前面:前些天看完了JVM的内存结构,自以为自己是懂了,心里想想不就是分线程共享线程私有嘛...= 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println(...此题目我们只需要用到栈帧里面的局部变量表操作数栈 2.1、第一步 int i = 1 ? 只是一个简单的赋值操作 2.2、第二步 i = i++ ?...结果:i在局部变量表中变成了2,操作数栈中的 i 值为1,并且将 i 的值返回给 j,即此条语句以后,i = 2,j = 1 2.4、第四步 int k = i + ++i * i++ ?...; System.out.println(i); // 结果:i = 2 } } 最后的最后:本文的思考过程计算推导仅针对Java语言。

1.5K10

java中i++ ++i的区别

今天同事扔给我两道面试题,由于我2年前就接触过这道题,所以没啥意思,我看完后扔到一个交流群里,回答这道题的绝大部分人竟然都答错了;很多人很清晰的知道这两道题想考察面试者对 i++ ++i 的理解...(这是一道典型的看着非常简单的题,但是不少人还是会因为粗心栽跟头) 第一题: int a = 0; for (int i = 0; i < 99; i++) {...= 0; i < 99; i++) { b = ++ b; } System.out.println(b); 我估计会有不少人做错,因为群里开发三四年的人...i++ ++i 在理论上的区别是: i++:是先把i拿出来使用,然后再+1; ++i :是先把i+1,然后再拿出来使用; 答案见下: 第一题:a=0 第二题:b=99 再升级一下 第三题...Integer a = 0; int b = 0; for (int i = 0; i < 99; i++) { a = a ++;

1.2K30

图解 i++ ++i 的区别!看了必懂

先看一段代码: int i = 0; int a = i++; sout("a的值是:"+i); sout("i的值是:"+i); 最终的编译之后的核心字节码如下 L0 BITPUSH 0 //将常量...//将当前栈顶元素,弹出并保存到局部变量表的slot_2中 L2 ILOAD_2 //从局部变量表的第二个slot槽中,取出该值,压入操作栈顶 IRETURN //返回栈顶元素 这里两个注意点...IINC 的自增操作,并未影响当前的栈顶元素,并且 slot_1 中的元素自增完成后,已经由0变成了1 ISTORE_2 弹出的栈顶元素值依旧是0,并未改变 最终的输出的结果为: a的值是: 0 i的值是...: 1; 我这里画了一个图来帮助大家理解 再来看看++i int i = 0; int a = ++i; sout("a的值是:"+i); sout("i的值是:"+i); 对于++i 来说,对应的字节码如下...: 1; 总结 i++ ++i 在理论上的区别是 : i++:是先把i拿出来使用,然后再+1; ++i :是先把i+1,然后再拿出来使用;

35720

从 JVM 层面理解 i++ ++i 的真正区别!

前言 如果只用普通的知识解释i++++i的话 i++ 先将i赋值再++ ++i 先++再赋值 但是这简单的回答并不能入吸引面试官的眼球,如果用java字节码指令分析则效果完全不同。...代码实现 public class OperandStackTest { /** 程序员面试过程中, 常见的i++++i 的区别 */ public static void...另外,Java 系列面试题答案全部整理好了,微信搜索Java技术栈,在后台发送:面试,可以在线阅读。...第四类问题 先将i9=10入栈,然后存在局部变量表8的位置 int i10 = i9++ + ++i9; 先iload将8位置的i9入栈然后执行iinc将8处的i9加一,然后执行++i9,在将8处的...另外,关注公众号Java技术栈,在后台回复:面试,可以获取我整理的 Java 系列面试题答案,非常齐全。

70430
领券