Array subscript has type 'char'
Bonjour je voudrais comprendre ceci !
Cet doc explique tres bien : http://name.raphael.poss.name/epita/gcc_warnings
mais dans ce cas...
Code:
1 2 3 4 5
|
static char tab[256];
tab['='] = -1;
tab[5] = -1;
tab[-5] = -1; |
la 1er ligne tab['='] = -1; indique l'erreur "Array subscript has type 'char'" alors que l'on sait tres bien que le char de '=' est positif. si je cast (unsigned)'=' cela fonctionne !
la 2eme ligne tab[5] = -1; fonctionne, normal
la 3eme lignetab[-5] = -1; fonctionne ! alors que je tente d'acceder au tab avec un indice negatif
une explication SVP !
merci de votre aide :)
Re: Array subscript has type 'char'
Citation:
Envoyé par obelix
Code:
1 2 3 4 5
|
static char tab[256];
tab['='] = -1;
tab[5] = -1;
tab[-5] = -1; |
la 1er ligne tab['='] = -1; indique l'erreur "Array subscript has type 'char'" alors que l'on sait tres bien que le char de '=' est positif. si je cast (unsigned)'=' cela fonctionne !
la 2eme ligne tab[5] = -1; fonctionne, normal
la 3eme lignetab[-5] = -1; fonctionne ! alors que je tente d'acceder au tab avec un indice negatif
- Ton compilateur n'est pas un compilateur C. En C, une constante caractère est de type int.
- RAS
- Rien de s'oppose à ce qu'un indice soit négatif. Que ça ait du sens est un problème qui ne dépend pas du langage mais du codeur. Se souvenir quand même qu'adresser en dehors des limites constitue un Comportement Indéfini (UB).
Re: Array subscript has type 'char'
Citation:
Envoyé par obelix
on sait tres bien que le char de '=' est positif. si je cast (unsigned)'=' cela fonctionne !
Il ne faut pas confondre positif et non signé.
Un entier signé peut être positif, un entier positif peut être signé, un entier non signé ne peut être positif.