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

首頁 > 學院 > 開發設計 > 正文

Java學習之神奇的i=i++

2019-11-18 11:48:45
字體:
來源:轉載
供稿:網友

  學習過一門計算機語言的人一定知道j=i++的運算結果,整個表達式的值為i,而i的值變為i+1;那么i=i++又是一個什么情況呢?下面分別用java 和 c 兩種語言來做個測試:
  
  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<stdio.h>
  
  main()
  
  {
  
   inti,j;
  
  i=0;
  
  for(j=0;j<5;j++)
  
  {
  
   i=i++;
  
  printf("i=%d/n",i);
  
  }
  
  }
  
  你也許會問,這么簡單的程序會有什么問題呢?是的,假如不相信的話,你可以運行一下這兩個程序,得到的結果非常讓人震動。
  
  第一個JAVA程序得出的結果如下:
  
  i=0
  
  i=0
  
  i=0
  
  i=0
  
  i=0
  
  而第二個C程序得出的結果如下:
  
  i=1
  
  i=2
  
  i=3
  
  i=4
  
  i=5
  
  同樣都是i=i++,為什么得出的結果會有這么大的差異呢?原來是在編譯器上出了問題,java的編譯器在碰到i++和i- -的時候會重新為變量運算分配一塊內存空間,以存放原始的值,而在完成了賦值運算之后,將這塊內存釋放掉,下面首先看一下假如是j=i++的情況:
  
 Java學習之神奇的i=i++(圖一)

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天长市| 南岸区| 科技| 来宾市| 承德县| 雷山县| 蒲江县| 体育| 和硕县| 乌拉特中旗| 通辽市| 东丰县| 漳州市| 磴口县| 临潭县| 台前县| 文水县| 历史| 灌云县| 栾城县| 西乡县| 朝阳县| 长顺县| 平谷区| 惠安县| 德格县| 吉木乃县| 临夏县| 宁津县| 钟祥市| 北碚区| 遂昌县| 南华县| 西丰县| 陆川县| 黎城县| 淮安市| 克拉玛依市| 城步| 兴安县| 惠来县|