Tutoriel C ++ sur la gestion des flottants et des entiers

Un int est un nombre entier comme 47 sans virgule décimale. Vous ne pouvez pas avoir 4,5 bébés ou faire de boucle 32,9 fois. Vous pouvez avoir 25,76 $ si vous utilisez un flotteur. Ainsi, lorsque vous créez votre programme, vous devez décider quel type utiliser.

C'est ce que font certains langages de script? Parce qu'il est inefficace, les flottants prennent plus de mémoire et sont généralement plus lents que les pouces. De plus, vous ne pouvez pas facilement comparer deux flotteurs pour voir s'ils sont égaux comme vous le pouvez avec des pouces.

Pour manipuler des nombres, vous devez les stocker en mémoire. Parce que la valeur peut être facilement modifiée, elle s'appelle une variable.

le compilateur qui lit votre programme et le convertit en code machine doit savoir de quel type il s'agit, c'est-à-dire s'il s'agit d'un entier ou d'un flottant, donc avant que votre programme n'utilise une variable, vous devez déclarer il.

Vous remarquerez que la variable Counter est définie sur 0. Il s'agit d'une initialisation facultative. C'est une très bonne pratique d'initialiser des variables. Si vous n'initialisez pas, puis ne les utilisez pas dans le code sans avoir défini de valeur initiale, la variable commencera par une valeur aléatoire qui peut «casser» votre code. La valeur sera celle qui était en mémoire lors du chargement du programme.

instagram viewer

Quel est le plus grand nombre qu'un int puisse stocker?. Eh bien, cela dépend du type de CPU mais il est généralement accepté comme 32 bits. Parce qu'il peut contenir presque autant de valeurs négatives que positives, la plage de valeurs est de +/- 2-32 à 232 ou -2 147 483 648 à + 2 147 483 647.

C'est pour un int signé, mais il y a aussi un non signé int qui contient zéro ou positif. Il a une plage de 0 à 4 294 967 295. Rappelez-vous juste - les entiers non signés n'ont pas besoin d'un signe (comme + ou -1) devant eux car ils sont toujours positifs ou 0.

Il existe un type int plus court, appelé par hasard short int, qui utilise 16 bits (2 octets). Cela contient des nombres compris entre -32768 et +32767. Si vous utilisez un grand nombre de pouces, vous pouvez éventuellement économiser de la mémoire en utilisant des pouces courts. Ce ne sera pas plus rapide, malgré sa moitié de taille. Les processeurs 32 bits récupèrent les valeurs de la mémoire par blocs de 4 octets à la fois. C'est à dire. 32 bits (d'où le nom - CPU 32 bits!). La récupération de 16 bits nécessite donc une récupération de 32 bits.

Il y a un 64 bits plus long appelé long long en C. Certains compilateurs C ++, tout en ne prenant pas en charge ce type, utilisent directement un autre nom, par exemple Borland et Microsoft utilisent _int64. Cela a une plage de -9223372036854775807 à 9223372036854775807 (signé) et de 0 à 18446744073709551615 (non signé).

À moins que vous ne fassiez de la programmation scientifique avec de très grands ou de petits nombres, vous n'utiliserez des doubles que pour une plus grande précision. Les flotteurs sont bons pour 6 chiffres de précision mais les doubles offrent 15.

Considérez le numéro 567.8976523. Il s'agit d'une valeur flottante valide. Mais si nous l'imprimons avec ce code ci-dessous, vous pouvez voir un manque de précision apparaître. Le nombre comporte 10 chiffres mais est stocké dans une variable flottante avec seulement six chiffres de précision.

Voir À propos de l'entrée et de la sortie pour plus de détails sur le fonctionnement de cout et sur l'utilisation de la précision. Cet exemple définit la précision de sortie sur 8 chiffres. Malheureusement, les flotteurs ne peuvent contenir que 6 et certains compilateurs émettront un avertissement sur la conversion d'un double en flotteur. Lors de l'exécution, cela imprime 567.89764

Si vous changez la précision à 15, il s'imprime comme 567.897644042969. Quelle différence! Déplacez maintenant le point décimal deux vers la gauche pour que la valeur soit 5,678976523 et réexécutez le programme. Cette fois, il affiche 5,67897653579712. C'est plus précis mais toujours différent.

Si vous changez le type de valeur en double et la précision en 10, la valeur sera imprimée exactement comme définie. En règle générale, les flottants sont pratiques pour les petits nombres non entiers, mais avec plus de 6 chiffres, vous devez utiliser des doubles.

L'écriture de logiciels informatiques ne serait pas très utile si vous ne pouviez pas faire d'addition, de soustraction, etc. Voici l'exemple 2.

En plus de l'addition, vous pouvez faire de la soustraction, de la multiplication et de la division. Utilisez simplement + pour l'addition, - pour la soustraction, * pour la multiplication et / pour la division.

Avec les flottants, vous n'avez aucun contrôle sur le nombre de décimales affichées, sauf si vous définissez la précision comme indiqué précédemment.

Maintenant, la largeur, l'alignement, le nombre de décimales et les signes peuvent être définis par le cout objet et iomanip inclure des fonctions de fichier.

Des milliers de séparateurs sont un peu plus compliqués. Ils sont définis à partir des paramètres régionaux d'un PC. Un paramètre régional contient des informations pertinentes pour votre pays, telles que des symboles monétaires et un séparateur décimal et des milliers. Au Royaume-Uni et aux États-Unis, le nombre 100,98 utilise un point décimal. comme point décimal alors que dans certains pays européens c'est une virgule donc 5,70 € signifie un prix de 5 euros et 70 cents.

crée un objet mpunct qui est une référence à un moneypunct classe de modèle. Cela contient des informations sur les paramètres régionaux spécifiés - dans notre cas, le milliers_sep () retourne le caractère utilisé pour le séparateur de milliers.

Remarque Il semble y avoir des divergences entre les différents compilateurs quant à la façon cout.imbue se comporte. Sous Visual C ++ 2005 Express Edition, cela comprenait des séparateurs. Mais le même code avec Microsoft Visual C ++ 6.0 ne l'a pas fait!

Si vous utilisez l'un de ces deux modes de formatage via le cout.setf ensuite précision() définit le nombre de décimales après le point décimal (pas le nombre total de chiffres) mais vous perdez le formatage des milliers. Des zéros de fin (comme activés par ios_base:: showpoint ) deviennent automatiquement activés sans avoir besoin point de vue.

Vous vous attendriez à quelque chose comme une valeur de 11.0909090909. En fait, la valeur est 11. Pourquoi est-ce? parce que le expression sur le côté droit (appelé rvalue) est entier / entier. Il utilise donc une arithmétique entière qui jette la partie fractionnaire et attribue 11 à f. Le changer en

En C, il n’existe pas de type bool. Les expressions en C étaient basées sur un zéro étant faux ou un non nul étant vrai. En C ++, le type bool peut prendre les valeurs vrai ou faux. Ces valeurs sont toujours équivalentes à 0 et 1. Quelque part dans le compilateur, il aura un

Ou du moins, il agit de cette façon! Les deux lignes ci-dessous sont valides sans transtypage donc en coulisses, les bools sont implicitement convertis en ints et peuvent même être incrémentés ou décrémentés bien que ce soit une très mauvaise pratique.

Le if fera toujours le if car la mauvaise variable est non nulle mais c'est du mauvais code et doit être évitée. La bonne pratique consiste à les utiliser comme prévu. si (! v) est valide en C ++ mais je préfère le plus explicite si (v! = 0). Mais c'est une question de goût, pas une doit faire directif.

il est préférable que le compilateur détecte les erreurs au moment de la compilation que l'utilisateur au moment de l'exécution

instagram story viewer