Em tưởng N nó chuyển chữ thành số được mà không phải.
-- thì nó lộn xộn quá, kiêm đa chức năng gê.
N mà gặp text thì luôn trả về 0.
Người ta dùng N để comment công thức. Công dụng khác là ép range thành array. Nhưng cái này hơi khó, đừng hỏi thêm.
-- (hai dấu trừ) thì chả có gì đa chức năng cả. Chỉ vì bạn không có căn bản về toán tử (operators) cho nên không biết nó.
- (dấu trừ) theo đại số học có hai nghĩa, nghĩa nào tùy theo vị trí của nó.
Nằm trong vị trí đơn vế (chỉ có một vế) thì nó là toán tử đổi dấu, -a là đối dấu trị a, tương đương với (-1)*a
Nằm trong vị trí ngẫu vế (giữa 2 vế) thì nó là phép trừ. a - b là đem a trừ b
Đừng nghĩ rằng a - b thì cũng giống như đổi dấu b rồi đem cộng cho a. Theo lô gic toán thì điều đó đúng. Theo luật thứ tự toán tử thì phải cẩn thận hơn. Luật thứ tự tính toán đặt toán tử đổi dấu ở vị trí khá cao (tính trước), cao hơn */, trong khi */ cao hơn +-.
-- (hai dấu trừ) chỉ là một mẹo, nó mang nghĩa giản dị là đổi dấu hai lần. Kết quả là trở về số in hệt số cũ.
Vậy nó dùng để làm gì?
Nó là cách
hiệu quả nhất để ép kiểu chuỗi thành số. Và tôi nói từ "nhất" ở đây một cách đầy tự tin, không sợ mang tiếng chủ quan. Bởi vì câu này dựa trên lô gic cấu trúc máy tính.
Dĩ nhiên, khi nói thế, tôi khẳng định rằng nó hiệu quả hơn thuật ép kiểu bằng cách +0 hay *1.
Có hai lý do:
1. đổi dấu là con toán căn bản của CPU, xử lý rất rất nhanh, dẫu phải làm 2 lần vẫn nhanh hơn + hoặc *. Đồng thời, đổi dấu chỉ cần 1 vế, +0 và *1 cần thêm vế thứ hai là hằng số 0/1
2. vì đổi dấu có thứ tự tính rất cao cho nên ít khi phải dùng đến dấu ngoặc () để phân biệt với các con toán kế tiếp. (Phép cộng có vị trí khá thấp cho nên +0 là cách khó nhất.)