Hai Câu sau có giống nhau không? a <= 20 ? (b = 30) : (c = 30); (a <= 20) ? b : (c = 30);
Đáp án đúng: A
Để so sánh hai câu lệnh, chúng ta cần phân tích cách chúng hoạt động trong các trường hợp khác nhau.
Câu lệnh 1: a <= 20 ? (b = 30) : (c = 30);
- Nếu a <= 20
là true
, thì b
được gán giá trị 30.
- Nếu a <= 20
là false
, thì c
được gán giá trị 30.
Câu lệnh 2: (a <= 20) ? b : (c = 30);
- Nếu a <= 20
là true
, thì biến b
được trả về (không thay đổi giá trị của b
).
- Nếu a <= 20
là false
, thì c
được gán giá trị 30.
Nhận xét:
- Trong câu lệnh 1, nếu a <= 20
là true
, thì b
sẽ nhận giá trị 30. Trong câu lệnh 2, nếu a <= 20
là true
, giá trị của b
không thay đổi (và biểu thức chỉ trả về giá trị của b
).
- Trong c cả hai câu lệnh, nếu a <= 20
là false
, thì c
được gán giá trị 30.
Vì vậy, hai câu lệnh này không giống nhau.