Vấn đề
Giải thích khái niệm tiền tố/hậu tố tăng/giảm của mảng qua chương trình C.
Giải pháp
Toán tử tăng (++):
- Tăng giá trị biến lên 1.
- Hai loại: tiền tố (++a) và hậu tố (a++).
- Tiền tố: toán tử đứng trước toán hạng, giá trị tăng trước rồi thực hiện phép toán.
ví dụ: z = ++a; a= a+1; z=a
- Hậu tố: toán tử đứng sau toán hạng, giá trị tăng sau khi thực hiện phép toán.
ví dụ: z = a++; z=a; a= a+1
Ví dụ truy cập phần tử bộ nhớ bằng tiền/hậu tố:
Khai báo mảng kích thước 5, khởi tạo tại compile time. Gán giá trị tiền tố cho biến 'a'.
a=++arr[1] // arr[1]=arr[1]+1; a=arr[1] b=arr[1]++// b=arr[1]; arr[1]+1
Ví dụ 1
#include<stdio.h> int main(){ int a, b, c; int arr[5] = {1, 2, 3, 25, 7}; a = ++arr[1]; b = arr[1]++; c = arr[a++]; printf("%d--%d--%d", a, b, c); return 0; }
Kết quả
4--3--25
Giải thích
a = ++arr[1]; tức a = 3 //arr[2]; b = arr[1]++; tức b = 3 //arr[2]; c = arr[a++]; tức c = 25 //arr[4]; printf("%d--%d--%d",a, b, c); printf("%d--%d--%d",4, 3, 25); Kết quả: 4--3--25
Ví dụ 2
#include<stdio.h> int main(){ int a, b, c; int arr[5] = {1, 2, 3, 25, 7}; a = ++arr[3]; b = arr[3]++; c = arr[a++]; printf("%d--%d--%d", a, b, c); return 0; }
Kết quả
27--26—0