taille entière en c dépend de quoi?
Taille de l'entier dépend de quoi?
Est de la taille d'une variable int en C dépend de la machine ou le compilateur?
source d'informationauteur shubhangi Motling
Vous devez vous connecter pour publier un commentaire.
Il est dépendant de l'implémentation. La norme exige seulement que:
char
a au moins 8 bitsshort
a au moins 16 bitsint
a au moins 16 bitslong
a au moins 32 bitslong long
a au moins 64 bits (ajouté en 1999)Dans le 16/32-bit jours, le de facto norme:
int
était "indigènes", entier tailleCependant, les systèmes 64 bits n'est en général pas faire
int
64 bits, ce qui aurait créé la situation inconfortable d'avoir trois 64-bit types et n ° 32-bits type. Certains compilateurs élargilong
à 64 bits.Il dépend du compilateur. Par exemple, si vous avez une version 64 bits processeur x86, vous pouvez utiliser un vieux compilateur 16 bits et obtenir 16 bits entiers, un compilateur 32 bits et obtenez 32 bits entiers, ou un compilateur 64 bits et obtenir 64 bits ints.
Cela dépend du processeur dans la mesure où le compilateur cible un processeur particulier, et (par exemple) un ancien de 16 bits processeur n'est tout simplement pas exécuter le code qui cible un tout nouveau processeur 64 bits.
Le C et le C++ normes ne sont la garantie d'une certaine taille minimale (indirectement par la spécification minimale prise en charge des plages):
La aussi de garantir que les montants/plages sont strictement non-décroissante dans l'ordre suivant: char, short, int, long, long long1.
1long long est précisé dans le C99 et C++0x, mais certains compilateurs (par exemple, gcc, Intel, Comeau) le permettent en C++03 code. Si vous le souhaitez, vous pouvez vous persuader la plupart (si pas tous) de rejeter
long long
en C++03 code.Officiellement, les représentations de tous les types de données (y compris leur taille) sont compilateur-dépendante et seulement compilateur-dépendante. Le compilateur (ou, plus correctement, la mise en œuvre) peut servir comme une couche d'abstraction entre le programme et la machine, masquant complètement la machine du programme ou de fausser la manière qui lui plaît.
Mais dans la pratique, les compilateurs sont conçus pour générer le code le plus efficace pour une machine donnée et/ou de l'OS. Afin de réaliser que l'essentiel des types de données doit avoir représentation naturelle de la machine et/ou de l'OS. En ce sens, ces représentations sont indirectement dépend de la machine et/ou de l'OS.
En d'autres termes, à partir de l'abstrait, formel et pédant point de vue, le compilateur est libre d'ignorer complètement le type de données des représentations spécifiques de la machine. Mais il ne fait pas de sens pratique. Dans la pratique, les compilateurs d'utiliser pleinement les données de type représentations fournies par la machine.
Encore, si un type de données n'est pas pris en charge par la machine, le compilateur peut encore fournir ce type de données pour les programmes par la mise en œuvre de son soutien au niveau du compilateur ("l'émulation"). Par exemple, 64-bit integer types sont normalement disponibles en 32 bits compilateurs pour les machines 32 bits, même si elles ne sont pas directement pris en charge par la machine. De retour dans la journée, les compilateurs sont souvent compilateur niveau de support pour les types à virgule flottante pour les machines qui n'étaient pas équipés en virgule flottante co-processeur (et donc n'a pas en charge les types à virgule flottante directement).
Autant que je sache, la taille des types de données est mise en œuvre dépend. Cela signifie qu'il est entièrement à l'opérateur (c'est à dire le mec qui écrit le compilateur) pour choisir ce qu'il sera.
Donc, en bref, il dépend du compilateur. Mais souvent, il est plus simple pour l'utiliser quelle que soit la taille, il est plus facile à la carte pour le mot de la taille de la sous-jacentes à la machine de sorte que le compilateur utilise souvent la taille qui vous convient le mieux avec les sous-jacents de la machine.
Comme MAK dit, il est dépendant de l'implémentation. Ce qui signifie qu'il dépend du compilateur. Généralement, un compilateur cible une seule machine, alors vous pouvez aussi penser à elle que dépend de la machine.
Cela dépend de l'environnement d'exécution n'importe quel matériel que vous avez. Si vous utilisez un 16bit OS comme le DOS, puis il sera de 2 octets. Sur un OS 32 bits comme Windows ou Unix, il est de 4 octets, et ainsi de suite. Même si vous exécutez un OS 32 bits sur un processeur 64 bits, la taille sera de 4 octets seulement. J'espère que cette aide.
Il dépend à la fois de l'architecture de la machine, de l'exécutable de type) et le compilateur. Le C et le C++ seule garantie d'un certain minimum. (Je pense que ceux qui sont char: 8 bits, int: 16 bits, long: 32 bits)
C99 comprend certaines connues largeur des types comme uint32_t (lorsque possible). Voir stdint.h
Mise à jour: Conrad Meyer préoccupations.
De la taille d'une Variable de type Entier dépend du type de compilateur:
si vous avez un 16 bits du compilateur:
si vous avez une version 32 bits du compilateur:
la taille de chaque variable est juste le double de sa taille, en 16 bits compilateur
Même chose se produit si vous avez une version 64 bits du compilateur, et ainsi de suite.