begin process at 2012 05 30 11:45:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

stdint.h


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

stdint.h

vendredi 11 février 2005 à 00:53:29 | stdint.h

anarchysniper

La librairie stdint est censée fournir des type indépendants du système.

Cependant, dans le header, pour les int,

/* 7.18.1.1  Exact-width integer types */
typedef signed char int8_t;
typedef unsigned char   uint8_t;
typedef short  int16_t;
typedef unsigned short  uint16_t;
typedef int  int32_t;
typedef unsigned   uint32_t;
typedef long long  int64_t;
typedef unsigned long long   uint64_t;

Deux questions :

1. Qu'est-ce qu'un char fout là ? L'a-t-on utilisé car il fait toujours 8 octets ?

2. Faire dépendre des variables qui doivent être indépendantes du système de types de base (short, int, long), eux dépendants du système ... ça semble bizarre. Ce ne serait pas tourner en rond ? Ces variables "indépendantes" sont elles fiables ?

Merci d'avance ^^ !
vendredi 11 février 2005 à 14:21:01 | Re : stdint.h

ShareVB

salut,

pour moi "Exact-width integer types" ca veut dire types entiers (de largeur exacte)...

je ne suis pas sur, mais pour moi :
 - un char : tjs un octet
 - un short : tjs deux octets
 - un long : tjs 4 octets
 - un long long : tjs 8 octets
seul (unsigned) int dépend de la platform ...

ShareVB
vendredi 11 février 2005 à 23:08:07 | Re : stdint.h

steve_clamage

Un char n'est rien d'autre qu'un entier en C (en C++ c'est légèrement différent, ca reste tout de même un type scalaire).

Pour les tailles, la norme ne fix rien (ca pourrait nuire à la portabilité du C), mais :
  • un char à toujours une taille en byte, mais la notion de byte en C indique la plus petite plage adressable en bits et non un octet. C'est la constante CHAR_BIT qui indique le nombre de bits (digit binaire) utilisés pour coder l'entier.
  • apres on à juste une relation char <= short <= int <= long, habituelllement long est codé sur 32 bits, et int correspond au mot machine (taille des registres ALU par ex) car c'est en quelque sorte le type initial du C et que c'était la ca fonction. Inutile de préciser que pour des raison de performances, il vaut mieux utiliser au maximun le type int.
  • l'opérateur sizeof renvoi une taille en char, donc sizeof(char) est toujours égale à 1. Pour connaitre de manière portable le nombre de bits utilisés pour coder un entier, il suffit d'afficher sizeof(int)*CHAR_BIT par exemple.
Le fichier d'entete stdint.h est donc trés utile pour manipuler des entiers de taille fixe indépendament de l'architecture.


Cette discussion est classée dans : long, système, unsigned, typedef, stdint


Répondre à ce message

Sujets en rapport avec ce message

Probleme avec le registre [ par punx120 ] Voila j'aimerais recuperer la valeur d'une chaine dans la base des registres, mais je n'y arrive pasvoici le code que j'utilise : #include #include vo Newbie Erreur en C sous JBuilder c++ 6 [ par MrNo ] salut je suis en trainde reprendre un programme existant en c sous cbuilder qui marchai t avant mais j'aides erreur a la compilationvoici mon code sur Chaine de caractere [ par xarier ] voila je veut recuperé le numero de serie de c:\ et j'ai pas pu car a la place que la variable nex recuperele la valeur de serial il recupere un autre conversion en unsigned long [ par flatou ] voila j'ai un type de donnée défini comme suit :typedef unsigned long long my_ulonglong;#endifc'est un type de donnée MySQL. Or j'ai vu que pour utili conversion constante en hexa ->unsigned long ou int ??? [ par andrealphus ] 4ndr&@lphu$rebonjour à tous et toutes,mon nouveau probleme est ridicule mais gênant...comment peut on convertir un nombre hexadécimal (du style l'adre ptit probl with:WriteFile() et ReadFile() [ par oudkaramla ] salut tout le monde,J'ai un petit problem avec WriteFile() et ReadFile().lors de la compilation j'ai les deux suivantes erreures:********************* problème Win32 Api [ par Toadstool ] J'ai Visual C++ 6 Introductory Edition et j'ai programmé une classe censée représenter une fenetre mais quand dans le constructeur de la classe j'ecri pb avec les pointeurs [ par oudkaramla ] salut, j'ai un problème dont je ne sais l'origine: en fait j'ai définis la fonction : int EnvoyerAvecReponse(char *g_buffer, unsigned long nBytesToWri sizeof bizarre [ par khayyam ] bonjour, j'ai la structure suivante : typedef struct { unsigned char sign1, sign2; unsigned long size_totale, reserve,offset; un Convertion d'un unsigned long Double en string [ par yves_r ] Bonjour, J'ai besoin de convertir le résultat d'un calcul en string (char *). Si j'utilise sprintf( s, "%Ld", mon_double), j'obtient une chaine


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,404 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales