2014-05-05 17 views
5

nếu tôi có một dòng mã mà đi một cái gì đó giống nhưƯu tiên của việc truyền trong java là gì?

int s = (double) t/2 

Đó có phải là giống như

int s = (double) (t/2) 

hoặc

int s = ((double) t)/2 

?

+0

bản sao có thể có của [Nguyên tắc ưu tiên toán tử Java] (http://stackoverflow.com/questions/2137690/java-operator-precedence-guidelines) –

+0

http://stackoverflow.com/questions/5762270/java-casting- thứ tự – knoight

Trả lời

6

This should make things a bit clearer. một cách đơn giản, một dàn diễn viên được ưu tiên hơn phép chia, vì vậy nó sẽ được điều tương tự như cho sản lượng tương tự như

int s = ((double)t)/2; 

Edit: Như knoight đã chỉ ra, điều này không phải là kỹ thuật tương tự vì nó sẽ không có dấu ngoặc đơn, vì chúng cũng có ưu tiên. Tuy nhiên, với mục đích của ví dụ này, nó sẽ cung cấp kết quả tương tự, và cho tất cả các mục đích và mục đích tương đương.

+1

dấu ngoặc đơn ưu tiên ghi đè - vì vậy nó không hoàn toàn giống nhau. – knoight

+1

@knoight Ý của tôi là, trong khi đó là một hoạt động khác về mặt kỹ thuật, ghi đè không thay đổi các ưu tiên, do đó, nó là một sự so sánh công bằng. – caseif

+0

Bạn đúng rằng trong ví dụ cụ thể này, dấu ngoặc đơn không có hiệu lực đối với kết quả cuối cùng - tuy nhiên điểm tôi muốn thực hiện là các dấu ngoặc đơn sẽ ảnh hưởng đến thứ tự đánh giá. Vì vậy, nếu OP đã chọn một ví dụ khác, chẳng hạn như một trong liên kết tôi đã đăng ở trên, thì vị trí của dấu ngoặc đơn trở nên rất quan trọng - và tôi cảm thấy rằng đã bị bỏ qua trong câu trả lời của bạn. Một chỉnh sửa chạm vào đánh giá thay đổi phiếu bầu của tôi – knoight

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