30/09/2018, 16:10

Đ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.

Ngọc Nhân viết 18:11 ngày 30/09/2018

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

viết 18:17 ngày 30/09/2018

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

Minh Hoàng viết 18:23 ngày 30/09/2018

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

Nguyễn Minh Dũng viết 18:18 ngày 30/09/2018

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

Minh Hoàng viết 18:22 ngày 30/09/2018

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

Gió viết 18:24 ngày 30/09/2018

Đặ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) mà )

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.

b=(t && ((i++) == 0));
b=(f && ((i+=2) > 0));

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
Bài liên quan
0