Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2878 connectés 

  FORUM HardWare.fr
  Programmation

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°197546
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 19-08-2002 à 23:00:34  profilanswer
 

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
mood
Publicité
Posté le 19-08-2002 à 23:00:34  profilanswer
 

n°197568
246tNt
Resistance is futile
Posté le 19-08-2002 à 23:20:06  profilanswer
 

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

n°197573
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 19-08-2002 à 23:27:27  profilanswer
 

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
n°197578
antp
Super Administrateur
Champion des excuses bidons
Posté le 19-08-2002 à 23:34:35  profilanswer
 

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

n°197665
Combi_A_Ve​ndre
Posté le 20-08-2002 à 08:12:21  profilanswer
 

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
n°197667
Combi_A_Ve​ndre
Posté le 20-08-2002 à 08:13:14  profilanswer
 

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
n°197668
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 20-08-2002 à 08:13:41  profilanswer
 

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
n°197673
youdontcar​e
Posté le 20-08-2002 à 08:20:39  profilanswer
 

juju_le_barbare a écrit a écrit :

Bah nan !


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

n°197674
Combi_A_Ve​ndre
Posté le 20-08-2002 à 08:22:34  profilanswer
 

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
n°197679
trueslash
(╯°□°)╯︵ MMM
Posté le 20-08-2002 à 08:31:41  profilanswer
 

:ange: sizeof()  :ange:


---------------
sympathisant UBCT
mood
Publicité
Posté le 20-08-2002 à 08:31:41  profilanswer
 

n°197682
youdontcar​e
Posté le 20-08-2002 à 08:38:57  profilanswer
 

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 :)

n°197686
LetoII
Le dormeur doit se réveiller
Posté le 20-08-2002 à 08:48:13  profilanswer
 

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
n°197687
youdontcar​e
Posté le 20-08-2002 à 08:51:42  profilanswer
 

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)  

n°197703
LetoII
Le dormeur doit se réveiller
Posté le 20-08-2002 à 09:11:49  profilanswer
 

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
n°197716
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-08-2002 à 09:30:42  profilanswer
 

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
n°197717
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-08-2002 à 09:31:17  profilanswer
 

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
n°197729
LetoII
Le dormeur doit se réveiller
Posté le 20-08-2002 à 09:43:37  profilanswer
 

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
n°197734
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-08-2002 à 09:50:20  profilanswer
 

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
n°197742
LetoII
Le dormeur doit se réveiller
Posté le 20-08-2002 à 09:57:59  profilanswer
 

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
n°197744
LetoII
Le dormeur doit se réveiller
Posté le 20-08-2002 à 09:58:38  profilanswer
 

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


---------------
Le Tyran
n°197767
Combi_A_Ve​ndre
Posté le 20-08-2002 à 10:38:19  profilanswer
 

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
n°197770
Combi_A_Ve​ndre
Posté le 20-08-2002 à 10:39:43  profilanswer
 

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
n°197796
LetoII
Le dormeur doit se réveiller
Posté le 20-08-2002 à 11:07:49  profilanswer
 

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
n°197924
Combi_A_Ve​ndre
Posté le 20-08-2002 à 13:02:12  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

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

 

Sujets relatifs
[C/C++ sous Unix] Manipuler les IPs[C++ sous unix] Moults questions diverses et intéressantes !!!
problème avec find et grep ss unixcomment updater la database de 'locate' sous unix sans etre root ?
[C++] sous unix, O_TEXT (fonction open())La taille d'un répertoire sous Unix est elle toujours fixe?
La commande Find (unix)Fonction C pour tester un mot de passe Unix
[C] E/S haut /bas niveau sur fichiers et différences Unix/Windows.script unix (type alias)
Plus de sujets relatifs à : [C sous Unix] != entre short int, int, et long int !!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR