Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Types entiers, questions de taille

Aucune réponse
Avatar
Manuel Pégourié-Gonnard
Bonjour,

Quelques petites questions sur les types entiers :

1. La norme C89 spécifie long int, qui doit être un type entier d'au
moins 32 bits de large. Ce type est-il vraiment implémenté par tous les
compilos, y compris quand la cible est un environnement très restreint
(genre microcontroleur 8 bits) ?

2. A-t-on des garanties sur la taille minimum de size_t ? Je n'ai pas
réussi à en trouver dans la norme, mais j'ai peut-être mal cherché.

Ce qui motive ces deux questions, c'est que je dois tester si une valeur
de type size_t est ou non strictement inférieure à 2^16 - 2^8. Pour
l'instant, je pense faire quelque chose comme

int is_small( size_t a )
{
if( (unsigned long) a >> 16 != 0 )
return 0;

return ((unsigned long) a + 256) >> 16 == 0;
}

pour éviter d'avoir à faire plusieurs cas selon la taille de size_t.
Cela vous paraît-il correct et portable ? Voyez-vous une façon plus
élégante/lisible de faire la même chose ?

Merci d'avance,
Manuel.

1 réponse

1 2 3
Avatar
credi
Le mardi 29 Avril 2014 à 14:48 par espie :
In article
Jean-Marc Bourguet
Manuel Pégourié-Gonnard

1. La norme C89 spécifie long int, qui doit être un
type entier d'au
moins 32 bits de large. Ce type est-il vraiment
implémenté par tous les
compilos, y compris quand la cible est un environnement très
restreint
(genre microcontroleur 8 bits) ?







C89, c'est un peu a la bourre, on est quand meme deux revisions plus loin.
Notons que ces points n'ont pas change sur le fond.


Aucune idee sur ce point precis, mais je sais que les compilateurs pour
microp 8 bits prennent parfois plus de libertes avec la norme que les
autres.




Un compilateur conforme doit implementer long int avec un intervalle de valeurs
correct (et donc un unsigned long int sur au moins 32 bits). Il faut voir si
on se limite aux compilateurs conformes ou pas...!

2. A-t-on des garanties sur la taille minimum de size_t ? Je n'ai pas
réussi à en trouver dans la norme, mais j'ai
peut-être mal cherché.




SIZE_MAX vaut au moins 65535 (description de stdint.h)




stdint.h est C99... si Manuel cherche dans C89, c'est normal qu'il n'ait pas
trouve...

Quel etait le probleme avec
return a < 0xFF00;





Ca m'a l'air parfaitement portable pour moi aussi...


FINANCEMENT DE CREDIT ENTRE PARTICULIER EN 72HEUR

Bonjour/Bonsoir
Je suis français, disposant d’un capital de 250.000.000€ , destiner à octroyer des prêts privé à court et long terme allant de 2500 € à 250.000.000€ à toutes personnes sérieuses, fiables et intègres désirant effectuer un prêt. Mon taux d’intérêt varie de 3% à 5% l'an selon la somme prêté et la durée de restitution des fonds, car étant particulier je ne veux pas violer la loi sur l'usure. Vous pouvez rembourser sur 2 à 35 ans maximum selon la somme prêté.
Vous avez besoin de faire un prêt:
Financement Prêts immobiliers
Prêts à l'investissement
Prêt automobile Deuxième hypothèques
Prêts personnels
Vous êtes fiché interdit bancaire et vous n'avez pas la faveur des banques, ou mieux, vous avez un projet et besoin de financement, un mauvais dossier de crédit ou besoin d'argent pour payer des factures, fonds à investir sur les entreprises.
Notre organisation n'est pas une banque et nous ne nécessitons pas beaucoup de documents.
Prêt juste et honnête et fiable. Alors si vous avez besoin de prêt n'hésitez pas à me contacter pour en savoir plus sur mes conditions. Veuillez me contacter directement par.

E-mail :
1 2 3