Maison >développement back-end >C++ >Pourquoi 'long long' est-il essentiel pour gérer de grands entiers en C/C ?

Pourquoi 'long long' est-il essentiel pour gérer de grands entiers en C/C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-08 09:18:02763parcourir

Why is  'long long'  essential for handling large integers in C/C  ?

Comprendre « long long » en C/C

En C/C, la gamme de types de données est cruciale pour gérer les valeurs numériques. Le type de données « long long » est introduit pour prendre en charge des valeurs entières plus grandes que le type « long » standard, ce qui permet des opérations encore plus précises.

Considérez l'extrait de code C/C suivant :

#include <stdio.h>

int main() {
    int num1 = 1000000000;
    long num2 = 1000000000;
    long long num3;
    long long num4 = ~0;

    printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));
    printf("%d %ld %lld %llu", num1, num2, num3, num4);
    return 0;
}

Une fois exécuté, ce code affiche le résultat suivant :

4 4 8
1000000000 1000000000 0 18446744073709551615

Le résultat démontre des résultats intéressants. comportements :

  • La taille de « long long » est de 8 octets, soit le double de celle de « int » et de « long ».
  • La valeur de « num1 » s'inscrit dans un « int » ', il est donc imprimé avec précision.
  • 'num2' a la même valeur que 'num1', mais son type 'long' lui permet de représenter des valeurs plus grandes. nombres.
  • 'num3' ne reçoit aucune valeur initialement, il s'imprime donc sous la forme 0.
  • 'num4' se voit attribuer l'inverse au niveau du bit de 0, ce qui donne sa valeur maximale possible dans un ' long long'.

Maintenant, décommentons le commentaire line:

num3 = 100000000000;

La compilation échoue avec l'erreur : "erreur : la constante entière est trop grande pour le type long." En effet, la valeur littérale « 100000000000 » dépasse la valeur maximale pouvant être représentée par un type « long ». Pour résoudre ce problème, nous devons préciser que ce littéral est un 'long long' en utilisant le suffixe LL :

num3 = 100000000000LL;

Avec cette modification, le code se compile et s'exécute avec succès. La sortie inclut désormais la valeur correcte pour 'num3' :

4 4 8
1000000000 1000000000 100000000000 18446744073709551615

Ce code illustre l'importance des types de données et l'utilisation du type 'long long' pour gérer de grandes valeurs entières dans la programmation C/C.

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!

Déclaration:
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