Hỏi về code xóa phần tử trùng trong mảng 1 chiều

E xin có code

#include<iostream>
using namespace std;
        void Nhap_Mang(int a[], int n)
        {
        	for (int i = 0; i < n; i++)
        	{
        		cout << "\nNhap phan tu a[" << i << "]";
        		cin >> a[i];
        	}
        }
        void Xuat_Mang(int a[], int n)			
        {
        	for (int i=0; i < n; i++)
        	{
        		
        		cout << a[i] << "  ";
        	}

        }



        void Xoa(int a[], int &n, int vitrixoa)
        {
        	for (int i = vitrixoa + 1; i < n; i++)
        	{

        		a[i - 1] = a[i];
        	}
        	n--;
        }
        void Xoa_Phan_Tu_Trung(int a[], int &n)
        {
        	for (int i=0; i < n - 1;i++) // i -1;
        	{
        		for (int j = i + 1; j < n;j++)
        		{ 
        			if (a[i]==a[j])
        			{
        				Xoa(a,n,j);
        				i--;// n?u không có i-- s? x?y ra l?i gì ?
        			}
        		}
        	}
        	// 1 2 1 1 3 4 5 6 7 8 ..
        }
        int main()
        {
        	int a[100];
        	int n;
        	cout << "\n Nhap so luong phan tu mang";
        	cin >> n;
        	cout << "\n\n\t Nhap Mang \n";
        	Nhap_Mang(a, n);
        	cout << "\n\n\t Xuat Mang \n";
        	Xuat_Mang(a, n);
        	Xoa_Phan_Tu_Trung(a, n);
        	cout << "\n\n\t Mang sau khi xoa phan tu trung";
        	Xuat_Mang(a, n);
        	system("pause");
        	return 0;
        }

khi ko có i-- ; thì ta nhập mảng 1 2 1 1 3 4 5 6 … sẽ còn xót lại là 1 2 1 3 4 5 6
nhưng e ko hiểu nếu i-- 2 lần như vậy thì i= -1 vậy sao , mà chỉ số phần tử âm sao mà chạy dc

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?