Bonjour tout le monde

Je comprends pas pourquoi lorsqu'on soustrait une valeur à un pointeur on a comme résultat une adresse par exemple *(P-3)= 4200304
par contre si on fait *(P+3) on le 4ème élément du pointeur qui est affiché, comme dans mon exmeple

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
#define n  10
int main(int arv, char* arg){
 
  int tab[] = {5, 15, 34, 54, 14, 2, 52, 72};
  int *p = &tab[1], *q = &tab[5];
  printf("*(p+3) = %d \n",*(p+3)); //14
 printf("*(p-3) = %d \n",*(p-3)); // ? 
}
on remarque que *(P+3)=14
et *(P-2)= 4200304 !!pourquoi c'est pas 54

merci