2012-03-11 32 views

Trả lời

16

Những gì bạn đang làm là kết hợp các loại phôi với các toán tử đơn nhất.

Vì vậy, chúng ta hãy xem:

Thứ nhất, bạn có giá trị -1, mà bạn đúc để loại long.

Sau đó, bạn thực hiện thao tác đơn nhất +, không thay đổi giá trị, vì vậy bạn vẫn có (long) -1.

Sau đó, bạn truyền nó sang int, vì vậy bây giờ chúng tôi có int -1. Sau đó, bạn sử dụng toán tử đơn nhất -, vì vậy chúng tôi có -(-1), là 1.

Sau đó, bạn truyền nó sang char, vì vậy chúng tôi có char 1. Sau đó, bạn sử dụng toán tử đơn nhất +, vì vậy bạn vẫn có 1.

Cuối cùng, giá trị được truyền đến byte, vì vậy bạn có byte 1. Và sau đó nó một lần nữa (ngầm) đúc thành int.

5

Các (<type>) phần khác nhau chỉ là đúc giữa các loại khác nhau. Vì vậy, những gì xảy ra là, đọc từ cánh phải, 1 ->-1 ->(long)-1 ->(int)-1 ->-(int)-1 = 1 ->(char)1) ->(byte)1 mà sau đó được đúc để một int trong chuyển nhượng. Không có kết quả nào xảy ra khi loại kết quả thay đổi giá trị, vì vậy toàn bộ dòng đầu tiên tương đương với int i = 1;.

2

Điều này đi từ phải sang trái. -1 được đúc lâu. Sau đó, tiền tố + được áp dụng (mà không có hiệu lực), và nó được đúc thành int. Sau đó, - được áp dụng (thay đổi nó thành 1) và nó được đúc thành char. Cuối cùng, tiền tố + được áp dụng (mà vẫn không có hiệu lực) và nó được đúc thành byte.

0

phép thêm dấu ngoặc đơn:

int i = ((byte) + ((char) - ((int) + ((long) (- 1))))); 
System.out.println(i); 

về cơ bản đây chỉ là một loạt các diễn viên và các nhà khai thác unary (+ không có gì, - phủ nhận)

dòng chảy toàn bộ chương trình là trong luiscubal 's câu trả lời

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