Chào mọi người
Mình có 2 câu hỏi :
Thứ nhất :
-
Tại sao 2 biểu thức dưới đây lại tương đương nhau, vì theo mình biết, toán từ ? : có thứ tự kết hợp từ phải sang trái :
-
e = (a >= 40?'A':(a >= 30?'B':(a >= 20?'C':(a >= 10?'D':'F'))))
(1) -
e = (a >= 40?'A':a >= 30?'B':a >= 20?'C':a >= 10?'D':'F')
(2)
-
-
Theo mình hiểu khi viết như (2) thì quá trình thực hiện sẽ thế này :
e = a >= 40?'A':a >= 30?'B':a >= 20?'C':a >= 10?'D':'F';
- Gia sử nhập a = 25, thì quá trình thực hiện như sau:
- Đầu tiên nó kiếm tra a với 10 và rút gọn lại
a >= 40?'A':a >= 30?'B':a >= 20?'C':'D'
- Tiếp theo kiếm tra a với 20
a >= 40?'A':a >= 30?'B': 'C'
- Tiếp theo kiêm tra a voi 30
a >= 40?'A':'C'
- và cuối cùng trả về C với giá trị nhập vào là 25.
-
Vậy có thể kết luận là, dù với giá trị nhập vào là bao nhiêu đi nữa thì biếu thức luôn kiêm tra bằng số điều kiện: (ở đây có 4 điều kiện ) – do vậy toán từ này sẽ chậm hơn if/else lồng nhau
-
Nhưng mình vẫn không hiểu sao thầy lại nói cách diễn giải trên của mình vẫn là từ trái sang phải
Thứ hai:
- Nếu mình hiểu sai, thì biểu thức đúng để nó thực hiện từ phải sang trái mà vẫn giữ nguyên ý tưởng của bài là gì.
Cám ơn mọi người.