對於 a a 操作的理解

2022-10-04 03:27:11 字數 670 閱讀 8666

今天偶然看到這個問題:

'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 要...