2010-09-15 39 views
10

Tôi mới sử dụng Java và có nền tảng của C.I đang trải qua cuốn sách của Khalid Moughal. Trên trang 126, ông đưa ra một ví dụ nhưkhái niệm điểm chuỗi trong java

int i = 10; 

    int k = ++i + --i; // ((++i) + (--i)). 

này vi phạm rõ ràng các khái niệm điểm tự như của C, trong đó nói rằng bạn không thể thay đổi giá trị của một biến đổi hơn một lần với tại điểm chuỗi tương tự. Câu hỏi của tôi là quy tắc điểm chuỗi giống nhau có áp dụng trong java hay không? Có thể là ông đã lấy ví dụ này chỉ để giải thích khái niệm tiền tố đơn nhất và tác dụng phụ của nó nhưng một ví dụ rõ ràng vi phạm nguyên tắc cơ bản của ngôn ngữ không được mong đợi trong một cuốn sách nổi tiếng như Khalid Moughal.

Vì vậy, vui lòng xác nhận điều đó.

Hy vọng bạn đưa mọi người vào tinh thần phù hợp.

Cảm ơn,

Mawia

+2

C có rất nhiều hành lý từ thực tế có hàng tá trình biên dịch và hàng triệu chương trình hiện có trước khi tiêu chuẩn được viết, vì vậy họ phải tạo tiêu chuẩn theo cách không phá vỡ chương trình phụ thuộc vào cách một trình biên dịch cụ thể tối ưu hóa mọi thứ. Ngoài ra, tối ưu hóa là khá nguyên thủy, giải thích từ khóa 'register' cho phép lập trình viên thực hiện tối ưu hóa vi mô mà bất kỳ trình biên dịch nào có thể làm tốt hơn. –

Trả lời

8

Câu hỏi của tôi là không giống nhau quy tắc điểm tự áp dụng trong java hay không?

Không, không có điểm chuỗi trong Java. Thứ tự đánh giá (etc) được xác định rõ trong Java.

cũng đọc this câu trả lời.

+8

Mặc dù thứ tự được xác định rõ, cần lưu ý rằng bất kỳ ai dạy viết mã như thế này sẽ bị thu hồi giấy phép tại chỗ ... – EFraim

+0

@EFraim: Đúng vậy! :) –

+0

Liên kết thứ hai không còn hoạt động nữa. –

0

Không, không có khái niệm về thứ tự-điểm trong java và thứ tự của được xác định đầy đủ. Nói chung, các biểu thức được đánh giá từ trái sang phải.Đối với định nghĩa chính thức, bạn có thể đọc JLS, phần 15.7 về thứ tự đánh giá. Xem liên kết this.

Các vấn đề liên quan