En tant que mise à jour sur les types de données du C disponibles, consultez here. Il y a une règle, et qui concerne l'utilisation de C, certains types de données sont promus à leur type intégral, par exemple
char ch = '2';
int j = ch + 1;
Maintenant, regardez la partie droite (côté droit à la main) de l'expression et notez que le ch
sera automatiquement promu comme int afin de produire les résultats souhaités sur le LHS (LHS) de l'expression. Quelle serait la valeur de j
? Le code ASCII pour '2' est 50 décimal ou 0x32 hexadécimal, ajouter 1 dessus et la valeur de j
serait 51 décimal ou 0x33 hexadécimal.
Il est important de comprendre cette règle et cela explique pourquoi un type de données serait «promu» à un autre type de données.
Qu'est-ce que le b
? C'est un tableau que je présume qui a 655532 éléments corrects?
Quoi qu'il en soit, en utilisant un spécificateur de format %d
est pour de type int, la valeur se est promu à un int, d'une part, et d'autre part l'indice de tableau est de type int
, d'où l'utilisation du short var
été promu et depuis la taille des données d'un int est de 4 octets, il a été promu et donc vous voyez le reste de la valeur 0xFFFF 0xFFFC.
C'est là l'utilisation de coulée arrive, pour dire au compilateur de coulé un type de données à un autre qui explique en même temps à la réponse de Gregory Pakosz ci-dessus.
Espérons que cela aide, Cordialement, Tom.
quel est votre compilateur? Peut-être votre compilateur ne supporte pas 'short' – SjB
me citer un compilateur C unique dans le monde qui ne supporte pas le type' short' ... –
@Pakosz refroidisse ... @ SjB short est garanti C Standard universellement ... comme dans: c'est le couteau armé de vaches qui pleut, mais vous avez toujours votre short = 16bits sur le langage C. Cela et long = 32bit, etc, etc, etc ... int, dépend de la machine, cependant. – jpinto3912