我用C跑以下程序++(DEC-C++):爲什麼Unary Post Operators在C++和Java中表現不同?
int k = 5;
k = k++;
cout<<"Value of K :"<<k<<endl;
int l = 5;
l = l++ + l++;
cout<<"Value of L :"<<l<<endl;
int m = 5;
m = m++ + m++ + m++;
cout<<"Value of M :"<<m<<endl;
,得到了5,12和18個變量K,l和m ..但是相同的節目,當我在Java運行 -
int k = 5;
k = k++;
System.out.println("Value of K :"+k);
int l = 5;
l = l++ + l++;
System.out.println("Value of L :"+l);
int m = 5;
m = m++ + m++ + m++;
System.out.println("Value of M :"+m);
我得到了變量K,L和M 5,11和18 ..
解釋爲什麼在一元后運營商的計算差別?我知道運營商的優先級和優先級規則。但是這裏的每件事都失敗了但根據規則,C++的回答似乎是合理的。困惑java如何計算?
衆所周知,C++和Java是不同的。請建議如何在Java中處理運算符優先級和運算符優先級。
C++之一是未定義的行爲。 Java中有一個被記錄。 – chris
[未定義行爲和序列點]的可能重複(http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points) - C++和Java是兩種不同的語言;在Java中,行爲是明確定義的。 –
@BrianRoach:這個問題解釋了C++的行爲。他對C++行爲不感興趣(儘管他應該這樣做,因爲他對此的解釋完全錯誤)。這是他不瞭解的Java行爲。 –