Các toán tử tăng 1, giảm 1 tiền tố, hậu tố
Cách thức chúng ta đã sử dụng các toán tử tăng 1, giảm 1 ở trên là cách chúng điển hình được sử dụng. Tuy
nhiên, các phát biểu gán cũng là các biểu thức và trả về giá trị được gán cho biến. Hay ít nhất chúng thực hiện
cho phép gán thông thường (với toán tử =) và compound assignment operators (như += và *=).
Thứ tương tự là đúng với các toán tử ++ và –-, nhưng những cụ thể là hơi khác. Hai toán tử này có thể được viết
trước hay sau biến được điều chỉnh. Ví dụ, bạn có thể viết hoặc là x++ hoặc là ++x để tăng lên 1 x. Cái đầu tiên
được gọi là postfix notation, và cái thứ hai gọi là prefix notation. Không có sự khác nhau có ý nghĩa giữa hai cái
khi được viết như một phát biểu hoàn chỉnh (x++; hay ++x;). Nhưng khi bạn sử dụng chúng như một phần của biểu thức,
x++ đánh giá cho giá trị gốc của x, trong khi ++x đánh giá cho giá trị cập nhật ủa x:
int x;
x = 5;
int y = ++x;
x = 5;
int z = x++;
Bất kể chúng ta làm gì, x++ hay ++x được tăng lên 1 và sẽ giá trị bằng 6 sau mỗi code block. Nhưng trong phần đầu tiên,
++x sẽ đánh giá thành 6 (tăng 1 trước, sau đó sinh ra giá trị mới của x), nên y cũng có giá trị bằng 6. Phần thứ hai, tương
phản lại đánh giá tới giá trị gốc của x bằng 5, cái được gán cho z, mặc dù x được tăng 1 thành 6.
Cùng logic áp dụng cho toán tử –.
Lập trình viên C# hiếm khi sử dụng ++ hay — như phần của một biểu thức. Nó là phổ biến hơn nhiều để sử dụng nó như một
phát biểu một mình, nên sự khác này hiếm khi có ý nghĩa.