i++,++i和i=i++的区别

基于单片机的智能温控风扇设计 该智能温控风扇系统的设计目标是根据环境温度自动控制风扇的转速或开关状态,确保用户始终处于舒适的温度范围内。实时温度监测:通过温度传感器(如DS18B20或DHT22)实时监控环境温度。风扇控制:根据温度变化自动调节风扇的转速,温度过高时风扇加速,温度适中时风扇转速降低,达到节能与舒适平衡。LCD显示:通过LCD屏幕实时显示温度信息。无线通信:通过Wi-Fi或蓝牙模块将温度数据发送至手机或云平台,支持远程控制风扇的开关或调节转速。报警功能:温度过高或过低时,蜂鸣器发出警报,提示用户注意。 阅读详情

i=++i,i=i++和i++的区别

1.i=i++与i=++i的区别:i=i++是先赋值再自加,i=++i是先自加再赋值。

如:

 

    public static void main(String[] args) {
        int i=0;
        i=i++;
        System.out.println(i);
    }

运行结果为:

	public static void main(String[] args) {
		int i=0;
		i=++i;
		System.out.println(i);
	}
运行结果为:



2.对于i=++i的运行结果我们可以理解,但是对于i=i++,i最后的运行结果为0,我们可能会感到困惑。那就让我们来看看i=i++的执行流程吧。

反编译得到如下字节码:

public static void main(java.lang.String[]);
  Code:
   0:   iconst_0//定义一个常量0,放入操作数栈
   1:   istore_1//把该常量弹出栈顶存入局部变量表
   2:   iload_1//将该局部变量放入操作数栈
   3:   iinc    1, 1//局部变量自加
   6:   istore_1//再把该常量弹出栈顶存入局部变量表
   7:   getstatic       #16; //Field java/lang/System.out:Ljava/io/PrintStream;
   10:  iload_1
   11:  invokevirtual   #22; //Method java/io/PrintStream.println:(I)V
   14:  return

}

从上面的分析过程中,我们可以看出局部变量在自加前,做了一个 iload_1的动作(将该局部变量放入操作数栈),起到缓存的作用,当局部变量完成自加后,再从操作数栈中将缓存的常量存入局部变量中。因此,i到最后是0。

3.i=i++与i++的区别

	public static void main(String[] args) {
		int i=0;
		i++;
		System.out.println(i);
	}

运行结果为:

反编译得到上面的字节码

public static void main(java.lang.String[]);
  Code:
   0:   iconst_0//定义一个常量0,放入操作数栈
   1:   istore_1//把该常量弹出栈顶存入局部变量表
   2:   iinc    1, 1//局部变量自加
   5:   getstatic       #16; //Field java/lang/System.out:Ljava/io/PrintStream;
   8:   iload_1
   9:   invokevirtual   #22; //Method java/io/PrintStream.println:(I)V
   12:  return

}

与i=i++相比,i++的字节码少了 iload_1和 istore_1,少了一个常量缓存的过程。因此,i++最后的结果为自加后的值1。

Motoman机器人离线编程——Motocom32开发简介 欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程——Motocom32开发简介 Motoman机器人离线编程——Visio Studio环境配置 Motoman机器人离线编程——Motocom32库函数的使用与封装 Motoman机器人离线编程——Motocom32参考文献及注意事项 Motoman机器人离线编程——MotocomES介绍 ... 阅读详情

相关推荐

Tesseract in Java - Intellij IDEA对Tess4J的配置和使用

最近要弄OCR,搜到这个,官网全英文,很烦,看看有没有中文的博客介绍,擦,一个比一个奇葩,还是自己按照官方的来吧,外网慢的很,传到csdn给大家下载。中文训练库下载地址: http://download.youkuaiyun.com/detail/d_dmelon/9916532Tess4J3.4下载地址: http://download.youkuaiyun.com/detail/d_dmelon/9916519安装

Lewis的博客 1万+

【JAVA】从原理上分析 i = i++ 与 i = ++i

从原理上(JVM、操作数栈、局部变量表)分析i=i++、i=++i等操作的结果。

See_Star的博客 3967

从ARCore到AICore:揭秘Google如何通过系统级服务推动Android生态创新

本文深入探讨了Google如何通过AICore等系统级服务推动Android生态创新。从ARCore到AICore,Google通过分层解耦策略将AI能力下沉至系统层,实现端侧大模型推理,如Gemini Nano在Pixel 8 Pro中的应用。文章剖析了AICore的技术架构、开发者赋能路径及场景化实践,展示了其在通信、内容创作和生产力工具中的卓越表现。

rust6ferris的博客 545

一看就懂的i++和++i详解

一看就懂的i++和++i详解 前言 我相信很多朋友可能之前已经百度过i++和++i的相关文章了,也做过不少的练习,觉得自己已经深刻掌握了它们之间的原理了,真的是这样的吗?来试试计算一下我下面提供的几道练习,你就会发现你又不会了! 示例代码 请先自己心算一下答案,然后找个本子记下来,然后再跟我后面的答案对比,看你能做对几道题,能做对两题以上的我喊你大哥!! 示例1 int i = 0; i = i++; System.out.println("i = " + i); 123 示例2 int a = 2;

song854601134的博客 3万+

LoRa项目实战:手把手教你为ESP32选配和焊接天线(从PCB到信号测试)

本文详细介绍了为ESP32选配和焊接LoRa天线的全流程,包括天线选型、PCB布局设计、焊接工艺及信号测试。重点解析了PCB板载天线、导线天线和陶瓷贴片天线的适用场景与性能特点,并提供专业的焊接技巧和信号测试方案,帮助开发者优化LoRa模块的无线通信性能。

weixin_30470643的博客 393

vcpkg管理OpenCASCADE的5个高效技巧:从多版本共存到离线部署

本文详细介绍了使用vcpkg高效管理OpenCASCADE的5个实用技巧,包括多版本共存、性能优化、团队共享、CI/CD集成和离线部署。通过自动配置和版本控制,vcpkg显著简化了OpenCASCADE的开发环境管理,特别适合工业级CAD开发场景。

rain6的博客 187

i++ 和 ++i 详解

i++ 即后加加,原理是:先自增,然后返回自增之前的值++i 即前加加,原理是:先自增,然后返回自增之后的值一个变量也是表达式,多个表达式的加减法运算都是从左到右进行的表达式。

Gzzz的博客 7984

最佳量化交易的计算机操作系统

本文在Creative Commons许可证下发布   我经常被问到的一个问题是:用哪种计算机操作系统和计算软件进行量化交易的理论研究和代码实现?   我想把这个问题简化,从挑选的计算软件和计算库来反推最佳使用的计算机操作系统。简而言之,就是在本文撰写的时候而言,如果你想进行基于任何严肃的数学理论和金融量化交易研究理论,这里特指机器学习或者深度学习。并且需要在本地研究机器上使用桌面版本,...

evilqliang的博客 2307

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

写在前面:前些天看完了JVM的内存结构,自以为自己是懂了,心里想想不就是分线程共享和线程私有嘛,然后又怎么怎么分怎么怎么的嘛… 直到遇到了这道题目。说句实话,曾经自己做这种运算题目,完全是靠脑子空想,然后拿上笔颤抖的写下一个自己都不知道正不正确的答案。不过过了今天,我终于能确定它的答案了。 为此,我也专门写一篇博客,记录我的学习!!! 文章目录1、题目2、分析2.1、第一步2.2、第二步2.3、第三步2.4、第四步2.5、结果3、i = ++i 1、题目 package pers.mobian..

持续Java学习中 3万+

Java语音革命:用代码打造永不疲倦的AI客服,让客户支持效率飙升300%!

客户支持领域常面临“薛定谔困境”,即无法预知客户来电的意图是投诉还是表扬。通过Java技术,尤其是语音识别和自然语言处理(NLP),可以有效解决这一问题。文章展示了如何利用Java代码构建“声纹量子引擎”,实现客户支持的自动化。核心技术包括录音与预处理、语音识别和语义理解。通过百度AI API和Stanford NLP,系统能够快速、准确地识别客户语音并理解其意图。数据表明,优化后的AI处理时间从15分钟缩短至18秒,语音识别准确率提升至98.5%,并发处理能力达到单实例1000+请求。这些技术显著提升了客

墨夶的博客 1035

Cesium中级开发教程之二十二:视锥体

教程示例网站:https://thomaz529.github.io。

883

i++和++i的真正区别

记得刚开始学编程的适合是从c语言开始的,还是看的谭浩强的那本书,上面对介绍i++和++i的区别如下: i++是先赋值,然后再自增;++i是先自增,后赋值。 用代码表示就是: 若 a = i++; 则等价于 a=i;i=i+1; 而 a = ++; 则等价于 i=i+1;a=i; 那么事实真是这样么,只是曾经我深信不疑,但是直到我看到下面这段代码:@Test public void test(

外星喵的博客 22万+

sam3.1 部署笔记 推理封装

sam3.1 部署笔记

jacke121的专栏 424

javac 和 javap工具详解

写在前面 由于javac和javap是两个相反的过程,所以放在一起做分析。 关于javac和javap如果想要做详细的了解,还是需要看Oracle官网的介绍。访问入口如下: javac. javap. 本文内容均为自己阅读文档后自己总结的,如有错误,还请指正。 1、javac 和 javap简介 javac:接收由Java语言规范(JLS)定义的源代码(.java后缀的源文件),并生成由J...

wendyyanan的专栏 2749

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C语言中i++与++i的异同及相关使用代码案例

C语言中的自加功能,可以从(变量和语句)两个角度出发。当从变量出发,它们表示的值,是不同的;当从语句功能出发,它们都表示自加1的情况。语言描述比较空洞,可以用一下两段代码,进行试验。为了节省广大初学者的宝贵时间,本文给出了实验代码和相应的结果。...

weixin_40437351的博客 1816

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Java】i++、++i、i = i + 1 和 i += 1 的区别分析

目录第1部分 i++ 与 ++i 的区别第2部分 i++ (或者 ++i )与 i = i + 1 、 i += 1 的区别计算方式区别效率分析 第1部分 i++ 与 ++i 的区别 这两个的区别大部分人都知道,就简单提一下 i++ 是先进行赋值操作,后进行自增操作;而 ++i 是先进行自增操作,后进行赋值操作,举个栗子 int i = 1; int j; j = ++i; // 此时是先自...

Amadeus的博客 4388

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java中i++,++i 和i= i+ 1的区别

Java中i++,++i都表示 i = i+1 i++是先是使用 i的原值,然后再原值的基础上加1. ++i是先在原值的基础上加1,然后在使用i的值。 直接看一个示例: public class Test1 { public static void main(String [] args){ int i = 0,j; j = i++; //i++ 先使用i的值,

billion_Fu的博客 1万+

C语言中i++,++i

C语言中i++,++i,i–,--i区别 简而言之 i++ / i-- :先引用后增加。先在i所在的表达式中使用i的当前值,后让i加1。 ++i / --i :先增加后引用。让i先加1,然后在i所在的表达式中使用i的新值。 代码测试 #include<stdio.h> int main() { int i = 1; int j = 1; int k = 1; int l...

j_learn的博客 7298

详解i++和++i,通俗易懂

前言 之前已经百度过i++和++i的相关文章了,感觉这篇写的最好理解,和大家分享一下! 示例代码 请先自己心算一下答案,然后找个本子记下来,然后再跟我后面的答案对比,看你能做对几道题,能做对两题以上的我喊你大哥!! 示例1 int i = 0; i = i++; System.out.println("i = " + i)...

debug的博客 2万+

i++和++i 和i+1的区别

大家对i++和++i肯定很熟悉,但是不理解其中深层次原因,就很难理解为什么(i+1)和(i++)会差这么多? 测试代码: 第一种:i+1      结论: 1 2 3 4 5 public class test { public static void main(String[] args) { for(int i=0; i<5; i++){ aa(i+1);

coding 1万+

深入理解Java中的i++、++i语句

在几乎所有的命令式编程语言中,必然都会有i++和++i这种语法。在编程启蒙教材《C语言程序设计》一书中,也专门解释了这两条语句的区别。有些语言中i++和++i既可以作为左值又可以作为右值,笔者专门测试了一下,在Java语言中,这两条语句都只能作为右值,而不能作为左值。同时,它们都可以作为独立的一条指令执行。

HinyLover的专栏 4万+

图解i++和++i,从底层搞懂它们的原理

今天突然看到一个题,是有关于 i++、++i,对于他们的结果一直以来只是记住口诀,并不知道原理,使用起来也不那么顺畅。 i++:先取值,后计算 ++i:先计算,后取值 若当题目仅仅是 i = i++;时,自己能迅速求出结果,但要是题目是 i = i + ++i + i++;的时候就有点头疼了,还很可能会搞错。 到底++计算过程是怎么样的呢,我于是就好奇了,到底他们是怎么实现的呢,今天就将它们的原理说一下。 图解i++和++i,从底层搞懂它们的原理几个相关的考题i ++++ i最终考题 几个相关的考题

尼尧Nier的博客 4803

从i++, ++i理解局部变量表和操作数栈

看一个面试题: public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i=" + i); System.out.println("j=" + j); System.out.println("k...

happy_bigqiang的博客 6442

反编译 i++ ,++i,i=i+1区别(修改)

1.(i++,++i)和i=i+1最大的区别 i++和++i使用的时iinc进行自增,i=i+1使用的是iadd操作栈顶和次栈顶元素进行相加 iinc操作的时局部变量表中的数据,iadd操作操作数栈中的数据。有疑问?就先带着疑问往下看 2.i++和++i的最大区别 i++是先把局部变量表的数据iload到栈顶,然后再进行iinc(操作数栈i=0,局部变量表i=1),++i是先对局部变量表...

以爱护甲,爱满枫林。 934

C++ 循环语句中 i++ 与 ++i 的区别深入剖析

C++循环语句中i++与++i的区别主要在于运算顺序和返回值。i++先返回当前值再自增,++i先自增再返回值。在for循环中,两者功能相同,现代编译器优化后性能差异可忽略,但理论上++i更高效(避免创建临时变量)。while循环中同样遵循各自运算规则。建议性能关键场景优先使用++i,一般情况则以代码可读性为准。参考文献包括C++标准教材和性能优化指南,深入解析了自增运算符的原理和应用场景。

2401_84309782的博客 1430

C++ 中 i++与++i的区别

i++ 与 ++i 这两个都可以整体看作是对变量i做的运算,只不过运算与返回的次序不同。没懂不要紧看下面的详解。 i++ : 功能是使i加一,但是返回的是原始(还未加一时)的i。 ++i:功能是使i加一,返回的是加一后的i。 以下有几个示例: vector<int> nums = { 3, 4,5, 10,6,7 ,7, 1,1, 5 }; int i = 0; cout &l...

liu14lang的博客 1595
上一篇: PowerDesigner(一)-PowerDesigner概述(系统分析与建模)
下一篇: 四舍五入保留两位小数
conviction_thinking
博客等级 码龄15年 143粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值