Điều kiện AND trong C++ có gì đặc biệt?

Đoạn chương trình này in ra cái gì và tại sao

int i=0;
bool t=true;
bool f=false;
bool b;
b=(t && ((i++) == 0));
b=(f && ((i+=2) > 0));
cout << i;

Có một bạn hỏi trên facebook thế này, Đạt thấy hay đem đố các bạn.

1 Like

Bài này mình hỏi trên Page biết rồi nhá :smile: . Để cho mấy bạn sau trả lời.

1 Like

in ra 1 do f = false nên biểu thức bên phải && ko dc thực hiện

1 Like

in ra 3 :smile: phép cộng mà anh Đạt cũng đố

@Rok_Hoang Xem đáp án của @camaptrang nhé, hố rồi :smiley:

1 Like

@@ ảo zị. Phép == và phép > làm thay đổi giá trị của i luôn

Đặc điểm của phép && là khi kiểm tra điều kiện logic thì nếu có 1 điều kiện sai (false) thì nó dừng các phép sau (Dù kiểm tra đi nữa thì nó cũng sai(false):smiley: )

Tương tự như vậy, phép || nó cũng kiểm tra điều kiện. Khi gặp điều kiện đúng thì nó cũng không kiểm tra biểu thức sau nữa.

Vì thế:

  • ở dòng 1. t=true nên nó tiếp tục kiểm tra. Và biểu thức sau dc thực hiện.
  • ở dòng 2, f=false nên biểu thức sau không được thực hiện để kiểm tra nữa.
    -> kết quả cuối cùng là: 1
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?