精华内容
下载资源
问答
  • i++和++i

    千次阅读 2019-09-17 18:33:32
    i++和++i速度 i++ 相当于 i = i + 1; ++i 相当于 int j = i; j = j + 1; return j; ++i自增后直接返回引用 而i++要先定义一个临时变量,把值赋给临时变量,然后自增,返回临时变量 ...

    i++和++i速度

    i++    相当于
    i = i + 1;
    
    ++i   相当于
    int  j = i;
    j = j + 1;
    return j;
    

    ++i自增后直接返回引用
    而i++要先定义一个临时变量,把值赋给临时变量,然后自增,返回临时变量

    展开全文
  • i++和++i的真正区别

    万次阅读 多人点赞 2017-10-11 23:21:20
    记得刚开始学编程的适合是从c语言开始的,还是看的谭浩强的那本书,上面对介绍i++和++i的区别如下: i++是先赋值,然后再自增;++i是先自增,后赋值。 用代码表示就是: 若 a = i++; 则等价于 a=i;i=i+1; 而 a =...
    • 记得刚开始学编程的时候还是从c语言开始的,还是看的谭浩强写的那本书,上面对介绍i++和++i的区别如下:
      i++是先赋值,然后再自增;++i是先自增,后赋值。
      用代码表示就是:
      若 a = i++; 则等价于 a=i;i=i+1;
      而 a = ++i; 则等价于 i=i+1;a=i;

    • 那么事实真是这样么,只是曾经我深信不疑,但是直到我看到下面这段代码:

     @Test
      public void test(){
          int i = 0;
          i=i++;
          System.out.println(i);
      }
    

    如果按原先定义,就应该是i=i;i=i+1; 那么结果就应该是1;但是很遗憾结果是0;所以得知原先定义有误,至少是不准确的。

    • 那么真实的机制是怎么样的呢?我简单用代码模拟如下真实流程:
       int i;
    
       @Test
       public void testAddI() {
           i = 0;
           i = lastAdd();
           System.out.println(i);
           i = 0;
           i = firstAdd();
           System.out.println(i);
       }
    
    
       //模拟i++的机制
       public int lastAdd() {
           //操作i前对其值保留副本
           int temp = i;
           i = i + 1;
           //返回副本
           return temp;
       }
    
       //模拟++i的机制
       public int firstAdd() {
           i = i + 1;
           return i;
       }
    

    输出结果为0和1,和i=i++以及i=++i的结果一致。

    • 结论:在java的执行过程中,i++和++i都直接对i进行了i=i+1的操作,但是不同的是i++得到的是i未进行加法操作的前的值的副本,而++i直接得到计算后的值。
    展开全文
  • C语言i++和++i的区别

    万次阅读 多人点赞 2016-12-03 11:09:28
    i++和++i的区别虽然简单,还是记录一下吧!   【知识点】  1. 对于普通独立的语句,i++和++i是一样的,如:  i++; 等效于i=i+1;  ++i; 等效于i=i+1;  2. 用于赋值语句,i++先赋值后加1,++i先加1后赋值,如: ...

        i++和++i的区别虽然简单,还是记录一下吧!

        【知识点】

         1. 对于普通独立的语句,i++和++i是一样的,如:

            i++; 等效于i=i+1;

            ++i; 等效于i=i+1;

         2. 用于赋值语句,i++先赋值后加1,++i先加1后赋值,如:

            i=1; y=i++;  等效于:i=1; y=i; i=i+1; 则执行完后 y=1; i=2;

            i=1; y=++i;  等效于:i=1; i=i+1; y=i; 则执行完后 y=2; i=2;

         3. 用于判断条件表达式:如

            a、i++:先执行判断后加1,如下:

    #include<stdio.h>
    
    int main()
    {
    	int i=0;
    
    	while(i++)
    
    	 { printf("i=%d\n",i);
    
    	   if(i==3)  break;
    
    	 }
    
    	printf("i=%d\n",i);
    }

              
         输出结果为:1

         分析:i++先把i的值0拿出来做判断条件,此时while(0)条件为假,所有不执行while循环体,但是判断完成后,i执行+1动作(i=i+1),所以i=1,输出值为1;

            b、++i:先加1后执行判断,如下:

    #include<stdio.h>
    
    int main()
    {
    	int i=0;
    
    	while(++i)
    
    	 { printf("i=%d\n",i);
    
    	   if(i==3)  break;
    
    	 }
    
    	printf("i=%d\n",i);
    }

             

         输出结果为:i=1,i=2,i=3,i=3

         分析:++i,执行过程先把i的值执行i=i+1,此时i=1再进行判断,所有while(1)条件为真,然后在执行循环体,输出i=1回车换行,if不成立,继续循环;

              当i=1时,再判断循环条件++i,还是先执行i=i+1,此时i=2; while(2) 条件为真,然后再做循环体,此时输出 i=2回车换行;if不成立,继续循环;

              当i=2时,再判断循环条件++i,还是先执行i=i+1,此时i=3; while(3) 条件为真,然后再做循环体,此时输出 i=3回车换行;if成立,强制推出循环;

              最后输出i=3,结束。

         这里需要注意的是:

         a、break语句表示强制从循环体内跳出,提前结束循环。

         b、while(1)、while(2)、while(3)都表示条件为真,也就是说非0的数都表示真。

        【小结】

         越是简单基础的知识,越需要常常回顾,多多积累!

    展开全文
  • Java中i++和++i的区别

    万次阅读 多人点赞 2017-01-18 11:41:42
    说来惭愧,从事开发工作也有一年时间了,然而在今天的一个业务逻辑里突然发现原来我对i++和++i都没有理解,或者说我之前的理解是错误的。这对于一个有追求的程序猿是不能容忍的。知道之后,迅速恶补学习,现在算是...
    • 说来惭愧,从事开发工作也有一年时间了,然而在今天的一个业务逻辑里突然发现原来我对i++和++i都没有理解,或者说我之前的理解是错误的。这对于一个有追求的程序猿是不能容忍的。知道之后,迅速恶补学习,现在算是彻底的理解了。
    • 这篇文章可能对于大神没什么用,毕竟技术层次不够,大神追求的都是思想层面的东西。但对于一些初学者的话还是有一些用的,或者有跟我一样的已经入行一些时间了,但对这个理解模糊的(IT界估计也就我一个了 ~~捂脸!)都可以参阅学习,我写的比较详细,相信只要你看,就绝对会有收获

    1, i++ 和++i


    在区分这两个之前,我们先来了解一下它们的运算规则

    int i=1,a=0;
    
    	 * i++ 先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1,所以结果是a==1
    	 * ++i 先运算在赋值,例如 a=++i,先运算i=i+1,后赋值a=i,所以结果是a==2
    

    看下面程序运行结果,有图有真相:

    public class Test3 {
    	public static void main(String[] args) {
    		int i=1,a=0;
    		System.out.println("a=i++===>  "+(a=i++));//1
    		//System.out.println("a=++i===>  "+(a=++i));//2
    	}
    
    }
    

    这里写图片描述
    这里写图片描述

    这里算是基本了解了,那么我们在来一个练习让你更加的理解它们之间的关系

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

    附上结果
    这里写图片描述

    是不是感觉有点转过转弯来,如果有这种感觉,那么恭喜你(找到跟我之前症状相同的了,哈哈),你也得好好理解理解了。下来是我添加上详细注释的代码。

    public class Test3 {
    	public static void main(String[] args) {
    		int y=0;	
    		//注意"="是赋值,"=="才是相等
    		//这里的y=++y 是先运算在赋值,先运算++y完了后y的值是1,然后在赋值给原来等于0的y
    		y=++y;// y==0,++y==y+1; 结果y=++y == y+1 == 0+1 ==1
    		y=++y;// y==1,++y==y+1; 结果y=++y == y+1 == 1+1 ==2
    		y=++y;// y==2,++y==y+1; 结果y=++y == y+1 == 2+1 ==3
    		y=++y;// y==3,++y==y+1; 结果y=++y == y+1 == 3+1 ==4
    		y=++y;// y==4,++y==y+1; 结果y=++y == y+1 == 4+1 ==5
    		System.out.println("y="+y);//5
    		int i =0;
    		// i==0,i++==0; 结果i=i++ == (记住先赋值后运算)i=i,i=i+1(由于是i++运算这里我们输出的i只取先赋值的结果也就是i=i)
    		i=i++;
    		i=i++;
    		i=i++;
    		i=i++;
    		i=i++;
    		System.out.println("i="+i);//0
    		System.out.println("================");//1
    		
    		
    	}
    
    }
    

    ps:这一年多实在太忙工作生活事情太多,很少看博客了,今天偶然看到之前写的这篇博客有很多热心网友指出了不对的地方,实属抱歉,也怪当时的表达有误对技术的理解不严谨,再次谢谢各位前辈的纠正。为了不对后面的人造成不必要的误导,特意来加以改正。
    有问题请各位大佬继续不吝赐教,若确实有误,我将虚心改进。

    还没有理解的,好好琢磨琢磨代码很容易就会理解啦。

    这里写图片描述

    展开全文
  • 1. i++ ++i 有什么区别,在jvm字节码层面又有什么区别 2. “i = i++ + ++i + i++ + ++i” 最后 i 的值是多少 3. “i = i++ + ++i + i++ + ++i” 这串代码的执行顺序(是从右向左顺序执行,还是像这样"i = (i...
  • 一看就懂的i++和++i详解

    万次阅读 多人点赞 2020-05-09 22:10:35
    转载请说明出处,本文来自Android菜鸟:...i = i++; System.out.println("i = " + i); 示例2 int a = 2; int b = (3 * a++) + a;
  • i++和++i的深刻理解

    万次阅读 多人点赞 2019-05-17 22:44:51
    前言:初学C语言的朋友一定对i++和++i傻傻分不清楚,本文将清楚的阐述两者的区别与联系。 话不多说我们先来看一下例子: #include <stdio.h> int main() { int i = 0,j; i++; printf("单独存在的i++...
  • i++ ++i的区别

    千次阅读 2020-05-27 11:43:47
    i++和++i都是变量自增1,都等价于i=i+1; 如果i++和++i都是一条单独的语句,两者没有区别 不同点: ++i是先自增1,再做Java运算 i++是先做Java运算,后自增加1 ++在前先自增,++在后后自增 //++在前 int x = 2; y= ++x...
  • i++和++i 和i+1的区别

    千次阅读 2015-05-21 18:45:16
    大家对i++和++i肯定很熟悉,但是不理解其中深层次原因,就很难理解为什么(i+1)和(i++)会差这么多? 测试代码: 第一种:i+1 结论: 1 2 3 4 5 public class test { public static void main(String[] args) { ...
  • i++和++i的详解

    千次阅读 2020-11-20 14:59:04
    前言:很多学计算机的小朋友刚刚开始听完老师讲过i++和++i之后都会觉得含糊不清。看了这篇博客,我觉得你应该会茅塞顿开。 首先我们来看一段简单的c语言代码: #include<stdio.h> int main(){ int i = 0,j; ...
  • C语言中i++和++i的区别

    万次阅读 多人点赞 2018-12-24 10:03:00
    C语言中i++和++i的区别 C语言中++i和i++是有区别的!快速理解的话就是用一句话概括: 1、i++是先赋值再运算+1; 2、++i是先运算+1再赋值; i++和++i都是c语言里的自增,但是它们自增的顺序不同。++i表示,i自增1后再...
  • java中i++ ++i的区别

    万次阅读 多人点赞 2018-06-20 17:27:28
    很多人很清晰的知道这两道题想考察面试者对 i++ ++i 的理解,也很清晰的知道这二者的区别,但是题还是做不对;两道题如下,大家可以先思考一下,给个答案,然后再去验证自己的想法。 (这是一道典型的看着非常...
  • c语言中i++和++i

    千次阅读 2020-03-03 22:02:50
    c语言中i++和++i的区别: 在运算中两者都是数值加一; 但是++I的优先程度大于赋值语句= 所以a=i++中是先把i赋值给a再加1; a=++i中i先加1,再赋值给a;
  • i++和++i的区别 i++是先使用i的值再执行i=i+1; 例如i的值为3 j=i++; 那么这个语句的结果是j=3,i=4 先使用i的值赋值给j 所以 j就等于一开始的i值 i=4是因为需要执行i=i+1 ++i是先执行i=i+1再使用i值 例如 i的值还是3...
  • 详解i++和++i,通俗易懂

    千次阅读 2021-01-19 19:16:31
    之前已经百度过i++和++i的相关文章了,感觉这篇写的最好理解,和大家分享一下! 示例代码 请先自己心算一下答案,然后找个本子记下来,然后再跟我后面的答案对比,看你能做对几道题,能做对两题以上的我喊你大哥!...
  • i++和++i区别

    多人点赞 2021-02-21 21:56:36
    1、首先,单独拿出来说++i和i++,意思都是一样的,就是i=i+1。 2、如果当做运算符来说,就是a=i++或者a=++i这样的形式。情况就不一样了。 先说a=i++,这个运算的意思是先把i的值赋予a,然后在执行i=i+1; 而a=++i...
  • 各种i++和++i面试题测试和过程分析

    千次阅读 2019-02-19 22:32:29
    各自i++和++i面试题测试和过程分析 先看面试题: 第1题: int i = 5; 求i+=i++;(结果10) 第2题: int i=12; 求 i+=i-=i*i;(结果-120) 第3题: int i = 1; i =i++ int j=i++; int k = i++ +i*i++;...
  • java i++和++i的区别

    千次阅读 2017-09-21 16:20:32
    java i++和++i的区别
  • java 分析 i++ 和++i 区别

    千次阅读 2018-12-02 15:11:57
    i++和++i的区别? //1号代码段 public class test02 { public static void main(String[] args) { int i=10; i++; int j=11; ++j; } } 使用javap查看字节码 public static void main(java....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 160,530
精华内容 64,212
关键字:

i++和++i