今天偶然看到這個問題:
'a = a++;'操作執行完後,a的值不變。
自己簡單測試了一下,確實是這樣,開始時沒想明白,以下是對該操作的理解及記錄。
int a = 10;
1)a = a + 1;
system.out.println(a); // a = 11;
2)a++;
system.out.println(a); // a = 11;
3)a = a++;
system.out.println(a); // a = 10;
情況1)比較好理解:
讀取a的值10,加1,結果11,重新賦值給a;
情況2)3)可以借助hashmap的put方法來理解:
將'a++'理解為put("a", 10 + 1)操作,a的值在map中更新為11,方法返回舊值10;
然後來理解2)和3)的區別:
a++; // put("a", 10 + 1),a的值更新為11,返回的舊值10沒有被接收(即丟棄)
system.out.println(a); // 讀取a的值11
a = a++; // a = put("a", 10 + 1),a的值更新為11,返回的舊值10又重新賦值給a(即a的值又變回10)
system.out.println(a); // 讀取a的值10
對於LabVIEW操作者框架的理解
操作者框架 用物件導向的方法,來解決 以前我們為了乙個並行的任務就 開乙個while迴圈並且用生產者消費者模式來解決這種問題。官方是這樣解釋的 多個並行任務之間往往需要相互通訊,傳統的解決辦法是,每個任務乙個佇列,乙個while迴圈,多工專案需要在乙個程式框圖使用多個while 不好看。ni說使用a...
對於STL的理解
stl standard template library stl是一些 容器 的集合,這些 容器 有list,vector,set,map等,stl也是演算法和其他一些元件的集合。這裡的 容器 和演算法的集合指的是世界上很多聰明人很多年的傑作。stl的目的是標準化元件,這樣就不用重新開發,可以使用...
對於ftok的理解
回顧了一下以前的實驗,一直不理解為什麼在訊息佇列中要使用ftok,比如下面的乙個例項 if key ftok a 1 qid msgget key,ipc creat 0666 建立乙個訊息佇列 if qid 0 printf created queue id d n qid 輸出訊息佇列的id 要...