này xảy ra trong khi tôi đang giải quyết một 'Cracking cuộc phỏng vấn Mã hóa' câu hỏi:Java hành vi tử gán vs C++
Viết một hàm để trao đổi một số tại chỗ (có nghĩa là, không biến tạm thời)
tôi quyết định viết lên giải pháp của tôi trong Java (vì tôi có kế hoạch về việc sử dụng Java trong các cuộc phỏng vấn thực tập của tôi.)
tôi đã đưa ra một giải pháp mà tôi đã gần như tự tin là câu trả lời đúng (vì tôi đã làm nó trong một dòng):
public static void main(String args[]) {
int a = 5;
int b = 7;
a = b - a + (b = a);
System.out.println("a: " + a + " b: " + b);
}
Chắc chắn đủ, mã này thực thi kết quả mong muốn. a == 7
và b == 5
.
Bây giờ, đây là phần thú vị.
Mã này sẽ không chạy trong C++ cũng không phải là giải pháp này ở mặt sau của cuốn sách.
Vì vậy, câu hỏi của tôi là: Tại sao giải pháp của tôi hoạt động chính xác? Tôi giả sử Java làm những việc khác với các ngôn ngữ khác?
Gợi ý: xor ........... –
Tôi nghĩ rằng (b = a) không trả lại bất kỳ điều gì trong C++. Hoặc có lẽ tôi sai, tôi không biết C++. – Sweeper
Đối với java: http://stackoverflow.com/questions/12850676/return-value-of-assignment-operator –