国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java學(xué)習(xí)之開始使用神奇的i=i++

2019-11-18 11:49:50
字體:
供稿:網(wǎng)友

  學(xué)習(xí)過一門計(jì)算機(jī)語言的人一定知道j=i++的運(yùn)算結(jié)果,整個(gè)表達(dá)式的值為i,而i的值變?yōu)閕+1;那么i=i++又是一個(gè)什么情況呢?下面分別用java 和 c 兩種語言來做個(gè)測試:
  
  JAVA:
  
  public class test
  
  {
  
  public static void main(String args[])
  
  {
  
  inti,j;
  
  i=0;
  
  for(j=0;j<5;j++)
  
  {
  
   i=i++;
  
  System.out.  
  }
  
  }
  
  }
  
  C:
  
  #include
  
  main()
  
  {
  
   inti,j;
  
  i=0;
  
  for(j=0;j<5;j++)
  
  {
  
   i=i++;
  
  printf("i=%d/n",i);
  
  }
  
  }
  
  你也許會問,這么簡單的程序會有什么問題呢?是的,假如不相信的話,你可以運(yùn)行一下這兩個(gè)程序,得到的結(jié)果非常讓人震動(dòng)。
  
  第一個(gè)JAVA程序得出的結(jié)果如下:
  
  i=0
  
  i=0
  
  i=0
  
  i=0
  
  i=0
  
  而第二個(gè)C程序得出的結(jié)果如下:
  
  i=1
  
  i=2
  
  i=3
  
  i=4
  
  i=5
  
  同樣都是i=i++,為什么得出的結(jié)果會有這么大的差異呢?原來是在編譯器上出了問題,java的編譯器在碰到i++和i- -的時(shí)候會重新為變量運(yùn)算分配一塊內(nèi)存空間,以存放原始的值,而在完成了賦值運(yùn)算之后,將這塊內(nèi)存釋放掉,下面首先看一下假如是j=i++的情況:
  
 Java學(xué)習(xí)之開始使用神奇的i=i++(圖一)

  i的原始值存放在后開辟的內(nèi)存中,最后這個(gè)值將賦值給j,這樣j=i++后,j就會得到i的值,而i又將自加,所以,在釋放內(nèi)存之后,原來存放j和i的地方將得到值將是:j(此時(shí)的值等于初始i值)和i(i自加后的值)。
  
  明白了上面的問題,讓我們接下來看看i=i++的情況:
  
Java學(xué)習(xí)之開始使用神奇的i=i++(圖二)

  所以這樣最后一次循環(huán)內(nèi)的結(jié)果仍然是i(即0)。
  
  而C語言中的i=i++就只是完成i++的內(nèi)容,所以結(jié)論會不同。這種情況說明java和c的處理語法的機(jī)制不同,假如在程序中只輸入i++就不會出現(xiàn)這個(gè)方面的問題,所以大家在以后的程序中假如使用到i=i++的時(shí)候要格外小心,一般只需要用i++就不會有問題了。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长汀县| 格尔木市| 山丹县| 临颍县| 汶上县| 阳西县| 广河县| 甘南县| 宜宾县| 丰镇市| 建瓯市| 枣阳市| 博罗县| 衡阳市| 邓州市| 大城县| 台北市| 宜章县| 阿克苏市| 剑川县| 日照市| 唐河县| 来宾市| 元朗区| 齐齐哈尔市| 永春县| 资源县| 麻栗坡县| 礼泉县| 修文县| 大渡口区| 体育| 错那县| 舞阳县| 榆社县| 绵阳市| 鄯善县| 赤峰市| 乾安县| 江阴市| 辽宁省|