Pré incrémentation d'une négation
Bonjour à tous !
Dans le cadre d'un exercice, je cherche à comprendre pour quoi le code suivant affiche une erreur :
Code:
1 2 3 4 5 6
| int main()
{
int B=2;
printf("%d",++!B);
return 0;
} |
D'après ce que j'ai compris, la pré-incrémentation et la négation ont la même priorité dans le tableau des opérateurs. Dans ce cas, le compilateur lit de droite à gauche. Comme !B retourne 0 sous forme d'un entier, pourquoi ne peut-on pas pré-incrémenter cette valeur ? Est-ce du au fait que le compilateur ne puisse pas détecter au préalable si ++ est une pré-incrémentation puisqu'il n'y a pas d'entier derrière ? J'ai un peu de mal à comprendre ! Merci de votre aide :)