[C sous Unix] != entre short int, int, et long int !!!

!= entre short int, int, et long int !!! [C sous Unix] - Programmation

Marsh Posté le 19-08-2002 à 23:00:34    

Bonjour,
 
donc sous architecture Unix, quelle est la réelle différence entre short int, int, et long int.
Je sais que short int c'est du 16 bits et long int du 32 bits, mais dans ce cas int ???
 
De plus beaucoup de fonctions du C attendent en paramètre un int.
Puis-je leur fournir du short int ou du long int ???
 
Merci


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 19-08-2002 à 23:00:34   

Reply

Marsh Posté le 19-08-2002 à 23:20:06    

int c 8 bit sur une arch 8bits, 16bits sur une arch 16bits, 32 sur une arch 32bits, ...

Reply

Marsh Posté le 19-08-2002 à 23:27:27    

246tNt a écrit a écrit :

int c 8 bit sur une arch 8bits, 16bits sur une arch 16bits, 32 sur une arch 32bits, ...
 




 
bah ça n'au aucun intérêt alors ???
Pourquoi ne pas utiliser des types fixes ???
 
Bizarres, faudrait m'éclairer d'avantage !
 
Merci en tk !


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 19-08-2002 à 23:34:35    

short <= int <= long
c'est la seule chose qui est sûre :D

Reply

Marsh Posté le 20-08-2002 à 08:12:21    

char : 1 octet
short : 2 octets
long : 4 octets
 
int et double : dépends de la machine
 
Le type int est facile à adresser directement par le pc car il est directement adressable, pour les types plus petit, je pense qu'il y a des manips à faire en plus (décalage et masquage) par le pc.
 
Donc pour les développements de brutes le int est pratique.
 
Arrêtez moi si je dis des conneries
 
vw


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 20-08-2002 à 08:13:14    

antp a écrit a écrit :

short <= int <= long
c'est la seule chose qui est sûre :D
 




 
même pas, car le long c'est 4 octets, donc sur une machine 16 bits, un int est plus petit qu'un long.


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 20-08-2002 à 08:13:41    

antp a écrit a écrit :

short <= int <= long
c'est la seule chose qui est sûre :D
 




 
Bah nan !
 
sur une architecture 16 bits, (short = int) < long
et sur une 32 bits : short < (int = long)
 
Mais je vois pas l'intérêt de ce type de variable ...
 
 :)


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 20-08-2002 à 08:20:39    

juju_le_barbare a écrit a écrit :

Bah nan !


Bah si !
 
<= : inférieur ou égal ...

Reply

Marsh Posté le 20-08-2002 à 08:22:34    

youdontcare a écrit a écrit :

Bah si !
 
<= : inférieur ou égal ...




 
Et sur une machine 64 bits ? :)


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 20-08-2002 à 08:31:41    

:ange: sizeof()  :ange:


---------------
sympathisant UBCT
Reply

Marsh Posté le 20-08-2002 à 08:31:41   

Reply

Marsh Posté le 20-08-2002 à 08:38:57    

Combi_A_Vendre a écrit a écrit :

Et sur une machine 64 bits ? :)


<= a le même comportement sur une machine 8, 16, 32 ou 64 bits :)

Reply

Marsh Posté le 20-08-2002 à 08:48:13    

Combi_A_Vendre a écrit a écrit :

 
 
Et sur une machine 64 bits ? :)




 
ben le int est entre 16 et 32 bits quand même.
 
Il me semble que des entier sur 64 bits existent maintenent mais je sais pas si c standard.


---------------
Le Tyran
Reply

Marsh Posté le 20-08-2002 à 08:51:42    

http://ccrma-www.stanford.edu/~jos [...] mbers.html
 
Byte sizes of GNU C/C++ data types for 64-bit architectures
Type Bytes  
short  2  
int  4  
long  8 (4 bytes on 32-bit machines)  
long long  8 (may become 16 bytes)  

Reply

Marsh Posté le 20-08-2002 à 09:11:49    

youdontcare a écrit a écrit :

http://ccrma-www.stanford.edu/~jos [...] mbers.html
 
Byte sizes of GNU C/C++ data types for 64-bit architectures
Type Bytes  
short  2  
int  4  
long  8 (4 bytes on 32-bit machines)  
long long  8 (may become 16 bytes)  
 




 
Bon ok, mes infos retardaient un peu :D  :jap:


---------------
Le Tyran
Reply

Marsh Posté le 20-08-2002 à 09:30:42    

youdontcare a écrit a écrit :

Bah si !
 
<= : inférieur ou égal ...




 
ouais on va devoir les renvoyer à l'école primaire :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 20-08-2002 à 09:31:17    

Combi_A_Vendre a écrit a écrit :

 
 
même pas, car le long c'est 4 octets, donc sur une machine 16 bits, un int est plus petit qu'un long.




 
bah oui ça confirme ce que j'ai dit :p


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 20-08-2002 à 09:43:37    

De toute manière si tu veux un truc précis d'un point de vue taille fait un champ de bit, là au moin... :D


---------------
Le Tyran
Reply

Marsh Posté le 20-08-2002 à 09:50:20    

encore que, tu n'es pas sûr de l'espace mémoire qu'il occupera, vu que c'est arrondi à la taille supérieur qui plaît le plus au compilo :)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 20-08-2002 à 09:57:59    

antp a écrit a écrit :

encore que, tu n'es pas sûr de l'espace mémoire qu'il occupera, vu que c'est arrondi à la taille supérieur qui plaît le plus au compilo :)




 
Ouai, mais t sûr d'avoir au minimum la taille que tu veux.


---------------
Le Tyran
Reply

Marsh Posté le 20-08-2002 à 09:58:38    

Et puis ça se désactive l'alignement des données.


---------------
Le Tyran
Reply

Marsh Posté le 20-08-2002 à 10:38:19    

letoII a écrit a écrit :

De toute manière si tu veux un truc précis d'un point de vue taille fait un champ de bit, là au moin... :D




 
Les champs de bits peuvent etre interprétés différement selon le compilo, c'est donc à déconseillé pour le multiplateforme, multi os ou multo compilo.
 
vw


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 20-08-2002 à 10:39:43    

letoII a écrit a écrit :

Et puis ça se désactive l'alignement des données.




 
Pour l'alignement des données, vous pouvez utiliser la directive pragma packed pour choisir l'alignement au bit prés dans une structure.
 
vw


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 20-08-2002 à 11:07:49    

Combi_A_Vendre a écrit a écrit :

 
 
Les champs de bits peuvent etre interprétés différement selon le compilo, c'est donc à déconseillé pour le multiplateforme, multi os ou multo compilo.
 
vw




 
Qu'est ce que tu entend par interprété différament?


---------------
Le Tyran
Reply

Marsh Posté le 20-08-2002 à 13:02:12    

letoII a écrit a écrit :

 
 
Qu'est ce que tu entend par interprété différament?




 
J'ai eu le problème sous Unix avec GCC et un compilateur Unix dont je ne souviens plus le nom.
Le but était de faire passer un buffer par une liaison série SPI entre processeurs motorola.
Pour un processeur j'utilisais GCC et pour l'autre processeur un autre personne utilisait un autre compilo.
 
La même définition du suivant donnait des mappings mémoires différents selon le compilateur.  
typedef struct
{
    ulong toto1:2;
    ulong toto2:5;
    ...
}
 
En informatique industrielle beaucoup de personnes évitent les champs de bits pour cette raison.
 
vw


Message édité par Combi_A_Vendre le 20-08-2002 à 13:02:30

---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed