Maison > développement back-end > C++ > le corps du texte

Pourquoi 'long long' se comporte-t-il différemment de 'int' ou 'long' en C/C ?

DDD
Libérer: 2024-11-07 17:23:03
original
669 Les gens l'ont consulté

Why does 'long long' behave differently than 'int' or 'long' in C/C  ?

Comprendre Long Long en C/C

En C et C, le type de données 'long long' représente un entier signé de 64 bits de précision. Cela lui permet de représenter des nombres extrêmement grands ou petits qui ne peuvent pas être pris en charge par des types entiers standard comme « int » ou « long ».

Dans l'extrait de code fourni, plusieurs questions ont été soulevées concernant le comportement de « long ». variables long' :

  • Taille de 'long long' : Pourquoi 'sizeof(num3)' produit-il 0, indiquant une variable non initialisée ?
  • Débordement d'entier :Pourquoi le code se compile-t-il et s'exécute-t-il sans erreur, produisant des valeurs bien supérieures à 10000000000 lorsque la ligne commentée ('num3 = 100000000000;') n'est pas commenté ?
  • Litéral Constantes entières :Pourquoi l'attribution d'une constante entière supérieure aux limites de type « long » à une variable « longue » entraîne-t-elle une erreur de compilation ?

Taille de « long long » :

L'opérateur 'sizeof' renvoie la taille d'une variable ou d'un type de données en octets. Puisque 'num3' n'est initialisé avec aucune valeur, il reste non initialisé et sa taille n'est pas définie, ce qui donne 0. Pour remédier à cela, initialisez explicitement 'num3' avec une valeur 'long long'.

Débordement d'entier :

C gère le débordement d'entier en silence. Lorsque la valeur attribuée à une variable dépasse sa capacité, elle recommence et continue de compter à partir de la valeur la plus basse. Dans ce cas, attribuer 1 000 000 000 à une variable « longue » entraîne un débordement et le résultat est une valeur négative. Cependant, puisque 'num2' est un 'long long', il peut accueillir une grande valeur sans débordement.

Constantes entières littérales :

En C et C, entier les constantes sont fortement typées. L'attribution d'une constante entière littérale qui dépasse les limites du type de données de destination entraîne une erreur de compilation. Dans cet exemple, la constante 100000000000 dépasse la plage de « long », et l'ajout de « LL » spécifie explicitement qu'elle doit être traitée comme une constante « long long ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!