2009-11-10 16 views

Répondre

5

Ceci est difficile sans savoir pour quelle CPU vous voulez compiler du code. En supposant, par exemple, Le compilateur C18 de Microchip pour PIC18, les User Guide énonce les tailles de type fondamentales suivantes:

TYPE    SIZE  RANGE 
char(1,2)   8 bits -128 127 
signed char   8 bits -128 127 
unsigned char  8 bits 0 255 
int     16 bits -32,768 32,767 
unsigned int  16 bits 0 65,535 
short    16 bits -32,768 32,767 
unsigned short  16 bits 0 65,535 
short long   24 bits -8,388,608 8,388,607 
unsigned short long 24 bits 0 16,777,215 
long    32 bits -2,147,483,648 2,147,483,647 
unsigned long  32 bits 0 4,294,967,295 

Notez que ceci inclut certains types (short long) qui ne sont pas standard C.

+0

Puis-je vous suggérer d'indiquer que ces valeurs sont pour le compilateur C18 de Microchip pour la famille PIC18? Je sais que le guide de l'utilisateur lié fournit cette information, mais cela rendrait cette réponse plus complète pour l'inclure ici aussi. De plus, étant donné que la question ne spécifie pas de compilateur et de microcontrôleur cible, il convient de souligner que les types peuvent être de tailles différentes pour d'autres cibles. –

1

Je me méfie de ces généralisations . MPLAB est juste un IDE - il convient à différentes puces. Microchip dispose de contrôleurs 8 bits comme les contrôleurs PIC18F, 16 bits et 32 ​​bits. Les types de données pour chacun peuvent être différents et avoir des implications sérieuses pour la performance. C'est à dire. pour les puces de 8 bits, les types de données 16 et 32 ​​bits peuvent être émulés dans un logiciel, ce qui n'est pas toujours ce que vous voulez.

1

Les valeurs pour int, long, etc., ne sont jamais définies de manière standard sur tous les compilateurs (reference). Pour cette raison, il est conseillé d'utiliser la bibliothèque:

#include <stdint.h> 

Pour utiliser cette bibliothèque pour vos propres besoins, essayez d'utiliser le code comme suit:

typedef uint8_t BYTE 
typedef uint16_t WORD 
typedef uint32_t LONG 

Ensuite, vous utilisez juste ceux-ci pour définir vos variables. Cette méthode utilise généralement un fichier integer.h pour stocker ces définitions et est incluse partout où cela est nécessaire.

-2
#include<stdint.h> 
long x; 

Ces deux choses m'a aidé à traverser;) Et l'info reste. est déjà partagé par d'autres personnes.

0

Voici l'implémentation de types de données entiers sur différents compilateurs MPLAB XC.

  1. Types de données pour les périphériques 8 bits (mise en œuvre sur le compilateur XC8): enter image description here

  2. Types de données pour les périphériques 16 bits (mise en œuvre sur le compilateur XC16): enter image description here

  3. données Types pour les périphériques 32 bits (implémentation sur le compilateur XC32): enter image description here