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

【答疑解惑】i++,++i,i+=的区别

表达式 a = i++; 它等价于 a = i ; i = i + 1; 表达式 a = ++i 它等价于 i = i + 1; a = i; 1、 首先两者的区别是:前者是先赋值,然后再自增;...后者是先自增,后赋值 2、 ++i 和i++ 的使用,一般来说在循环域里面,这两者并没有什么很大的区别,因为编译器一般都会给你做优化。...但是要注意其生存周期,我们要注意i值在程序流中的变化,如果是for、while循环判断中要特别注意++i的值比i++值要提前。...没有结果,因为不同的编译器做出来的结果,你要纠结这个,哎我只能说那些书上纯粹是搞人。 以上我们只需记住先序后续递增,循环判断时的条件即可。...i += 2; 这个是 i = i + 2; 自身值加上2后赋值给自己。这个没有争议。 来骚年练习一下 i += (++i)+(++i)+(++i); 呵呵!!!

1.8K50

面试官:i = i++和 i = ++i 的有什么区别?

"i="+i); System.out.println("j="+j); System.out.println("k="+k); } } 你能肯定并且准确的说出你的答案吗...其中一个方法对应一个栈帧 此题目我们只需要用到栈帧里面的局部变量表和操作数栈 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,就很简单了。...我们的 i 变量先在局部变量表中进行自增,然后再将 i 进栈,然后再把栈中的数据返回给我们的变量 i 。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    "i="+i); System.out.println("j="+j); System.out.println("k="+k); } } 你能肯定并且准确的说出你的答案吗...] 结果:i还是等于1 2.3、第三步 int j = i++ [6d273372-3586-44ac-97a9-88226ac9371b.png] `结果:i在局部变量表中变成了2,操作数栈中的 i...值为1,并且将 i 的值返回给 j,即此条语句以后,i = 2,j = 1 ` 2.4、第四步 int k = i + ++i * i++ [6798b125-1fec-45d1-9627-5ba8251e0aa6...我们的 i 变量先在局部变量表中进行自增,然后再将 i 进栈,然后再把栈中的数据返回给我们的变量 i 。...; System.out.println(i); // 结果:i = 2 } } `最后的最后:本文的思考过程和计算推导仅针对Java语言 ` 微信搜索:【Java小咖秀】更多精彩等着您

    1.9K00

    python开发_++i,i += 1的区分

    在很多编程语言(C/C++,Java等)中我们都会碰到这样的语法: 1 int i = 0; 2 ++ i; // -- i; 这样的语法在上述编程语言中可以实现自增(减),在python中也支持这样的语法...,不过在python中 这样的用法不是用来自增(减),而是实现数学中的符号运算操作: 1 i = 2 2 ++ i #输出:2 3 +(+i) #输出:2 4 -(+i)...: {}'.format(testA)) 31 print('+(+i) : {}'.format(testE)) 32 print('可以看出:++i和+(+i)输出结果是一样的,说明他们是等效的\...+i)输出结果是一样的,说明他们是等效的\n') 36 print('+-i : {}'.format(testC)) 37 print('+(-i) : {}'.format(testG))...38 print('可以看出:+-i和+(-i)输出结果是一样的,说明他们是等效的\n') 39 print('--i : {}'.format(testD)) 40 print('-(-i)

    1.3K10

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

    由于i++和i--的使用会导致值的改变,所以在处理后置的++和--的时候,java的编译器会重新为变量分配一块新的内存空间,用来存放原来的值, 而完成赋值运算之后,这块内存会被释放。...(1)对于j = i++的情况 ?   ...i的原始值存放在后开辟的内存中,最后将这个值赋给j,进行j = i++运算之后,j会得到i的值,而i又将自加,所以,在释放内存之后,原来存放j和i的地方将得到的值分别是:j(此时的值等于初始i的值)和i...(i自加后的值)。...每一次的循环结束,用来保存i的原始值的内存的数据会被销毁,然后i的新的值又会被放在一段新的内存中,在进行上述的循环,所以最终能够实现j的数据的增加。 (2)对于i = i++的情况 ?

    1.4K100

    I + I2C = I3C:这个附加的“I”是什么?

    MIPI 联盟2018年发布了 I3C(发音为“eye-three-see”)总线规范的第 1 版,这应该是对长期存在的 I2C 和 SPI 协议的改进。...I3C的应用场景 从上图中我们可以看到: 1、I3C总线可以应用在各种sensor中; 2、可以使用在任何传统的I2C/SPI/UART等接口的设备中。...什么是I3C I3C吸纳了I2C和SPI的关键特性,并将其统一起来,同时在I2C的基础上,保留了2线的串行接口结构,这样工程师就可以在单个设备中连接大量的传感器。...,可以支持到12.5MHZ 从下图中可以看到在传统的I2C接口设备中包含了太多的I/0口了(碎片式的接口),将之(I2C/SPI)替换成I3C之后可以节省很大部分的信号线(省去了中断信号的一根线EINT...按照目前MIPI联盟的规划,I3C总线在将来除了应用sensor之外,还有如下的应用领域:camera、TP等 I3C接口协议 从上图就可以很清楚的看到I3C总线的应用了,I3C总线中支持多主设备

    2.4K20

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

    只是一个简单的赋值操作 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,就很简单了。...我们的 i 变量先在局部变量表中进行自增,然后再将 i 进栈,然后再把栈中的数据返回给我们的变量 i 。...; System.out.println(i); // 结果:i = 2 } } 最后的最后:本文的思考过程和计算推导仅针对Java语言 最后,再附上我历时三个月总结的 Java

    1.2K30

    亿欧网启用i+系列域名完成B1轮融资

    中国500强企业沂州集团旗下的沂景投资已于2017年7月完成了对产业创新服务平台亿欧公司B1轮融资。    ...目前,亿欧公司旗下的产品和服务包括产业创新信息服务平台“亿欧网”、产业创新人物短视频项目“视也”、产业创新研究院“亿欧智库”、企业服务平台“企服盒子”、产业创新升级外脑平台“天窗”。 ...a   亿欧网的官网域名为iyiou.com,是一个i+系列的组合域名。域名由字母“i”和“亿欧”的汉语拼音组合,能够对应品牌名称,方便使用和记忆。   ...字母“i”是在互联网域名中使用非常多的一个字母。“i”是英文单词“internet”的首字母,一般被作为“互联网”的代表字母。   ...使用“i+”品牌拼音或者英文单词的域名是目前使用量比较大的一类域名。启用“i”类域名的终端有爱奇艺iqiyi.com、凤凰网ifeng.com、亿欧网iyiou.com等等。

    50000

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

    只是一个简单的赋值操作 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,就很简单了。...我们的 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 i++) {...(int i = 0; i i++) { b = ++ b; } System.out.println(b); 我估计会有不少人做错...i++ 和 ++i 在理论上的区别是: i++:是先把i拿出来使用,然后再+1; ++i :是先把i+1,然后再拿出来使用; 答案见下: 第一题:a=0 第二题:b=99 再升级一下 第三题

    1.2K30

    关于 i=i++; 出乎意外的结果

    简单翻译: 如果该运算符作为后置操作符,则返回它递增之前的值;如果该运算符作为前置操作符,则返回它递增之后的值 所以,我们就知道, ++运算符会返回一个值,如果前置,则返回操作对象递增之后的值,如果后置...,则返回操作对象递增之前的值。...当 var i=0 ; var i = i++; 时,实际上做了如下操作 i = 0 j = i; // j 操作运算时系统生成的 i = i+1; i = j; // 故i=0 当 var...i=0 ; var i =++i; 时,实际上做了如下操作 i = 0 i = i+1; j = i; //注意和上面代码的位置 i = j; // 故i=1 总结: 不管++在前,还是在后...;++运算符的优先级都高于=号; 区别在于,++返回的是递增之前的值,还是递增之后的值

    73320

    面试官:【int i = 6; i += i - 1; 】i 等于什么?

    具体来说,i - 1 的值是基于 i 的当前值来计算的,而这个计算过程不会影响当前 i 的值。详细过程:第一步:i 的初始值为 6。第二步:先计算 i - 1。...第四步:最后,将计算结果 11 赋值给 i,所以 i = 11。整个右侧表达式的计算是在独立的内存空间中完成的,并不影响变量 i 在此时的值,直到计算结果最终赋值给 i。...变量和赋值机制Java 的赋值机制是右结合的在 i += i - 1; 中,表达式右侧 i - 1 的计算先于赋值进行。...也就是说,右侧的表达式 i - 1 使用的 i 是表达式开始时的值,并且直到右侧计算完成后,新的值才会覆盖原来的 i。Java 的赋值是后期赋值+= 操作符表示的是先计算再赋值。...JVM 按照从左到右的顺序执行字节码指令,先执行 i - 1 的减法运算,再执行 i + (i - 1) 的加法,整个计算过程使用的是最初从局部变量表中加载的 i 值。

    29320

    域名系统中的域名

    1.何为域名 人和人要互相识别和记忆,需要名字作为辅助,而对于网络世界,在因特网内也需要一种命名系统来做类似的事情,该系统使用了域来划分,任何一个网络里的主机(或者路由器)都有独一无二的域名(类似国家代码...),域又能继续划分为子域(类似每个国家有不同的省份代码),子域还能继续划分(每个省都有自己的各个城市的代码)……在因特网内对应的就是顶级域名(com,net,cn,org等),二级域名……注意这仅仅是一种逻辑的划分...www是表示万维网,不属于域名 2.域名的树结构’ 3.域名服务器 DNS服务器管理范围的单位是区,不是域,因为区才是DNS服务器管理的实际范围,区是域的子集,同一个区里的主机节点必须互通,它们都有一个统一的访问权限...DNS服务器也是类似域名空间树一样的树结构,依次分为根域名服务器(知道所有的顶级域名服务器的域名和IP,最重要,它要是瘫痪,整个DNS就完蛋),然后是顶级域名服务器(管理二级域名),其次是权限域名服务器...(负责区的域名服务器)。

    20.1K30

    公司域名怎么来的 怎样的域名才算好域名

    不知道大家有没有发现,在互联网上,浏览的每一个页面都有着一个便以人们记忆的网址,要么就是公司的名称拼音,要么就是简约且富含意义的。说实话,这种域名既便于用户记住,又容易输入,俗称好域名。...下面就给大家讲讲这些公司域名怎么来的? image.png 公司域名怎么来的 公司域名怎么来的?如果一个公司是要做官网的关键词排名,那就肯定少不了一个好域名。...但好的域名在很早之前就已经被人注册,毕竟那时候的域名都是很值钱的,很多人看中了域名的发展前景,于是大量注册域名,等待有人需要的时候,就会售卖给对方。...大家现在所看到的好域名,极大可能是公司在某个注册人里买回来的。 怎样的域名才算好域名 一个好的域名至少具备以下的二点: 1、简洁易记:这种域名让人一目了然,还不容易输错。...以上就是关于公司域名怎么来的一些小介绍,在此建议大家在购买域名的时候,如果有条件就买国际后缀域名com,再配上富有涵义的名称,妥妥给人一股好印象。此外,不建议大家选用中文的域名,虽然很多用户能看懂。

    21.4K10
    领券