2013-09-03 23 views
5
public class AndOperator { 

    public static void main(String[] arg) { 
     int value = 8; 
     int count = 10; 
     int limit = 11; 

     if (++value % 2 == 0 && ++count < limit) { 
      System.out.println("here"); 
      System.out.println(value); 
      System.out.println(count); 
     } else{ 
      System.out.println("there"); 
      System.out.println(value); 
      System.out.println(count); 
     } 
    } 
} 

tôi đang nhận được đầu ra nhưGiải thích if (++ giá trị% 2 == 0 && ++ count <giới hạn) trong java

there 
9 
10 

giải thích cách đếm là 10 ....?

Trả lời

15

&&short-circuit operator. Nó sẽ chỉ đánh giá biểu thức thứ 2 nếu biểu thức thứ nhất được đánh giá là đúng.

++value % 2 == 0 là sai, do đó nó không đánh giá biểu thức thứ 2 và do đó không tăng count.

+5

Tại sao lưu ý ở đây? – arshajii

+0

Cảm ơn, tôi chưa bao giờ nghĩ về điều này! Học tốt. –

3

Vì bạn đang sử dụng toán tử && (lôgic và).

hợp lý và đánh giá điều kiện thứ hai chỉ khi điều kiện đầu tiên được đánh giá là true

đây trong mã của bạn điều kiện đầu tiên ++value % 2 == 0 được đánh giá để false, vì vậy điều kiện thứ hai ++count < limit sẽ không được đánh giá.
Nếu bạn muốn thực hiện ++count < limit cũng sử dụng &.
biết thêm thông tin đọc Difference between & and &&

+0

@down cử tri bạn có thể giải thích lý do để tôi có thể sửa lỗi của tôi.? – Prabhaker

2

Vì giá trị ++% 2 == 0 là sai, do đó, nó sẽ không trả lại câu lệnh đầu tiên. Lý do ++ giá trị% 2 là sai là bởi vì giá trị được tăng lên một trước khi toán tử mod được đánh giá. Vì vậy, giá trị ++% 2 là 9% 2 trong đó! = 0.

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