Questions sur l'entrée C++
漂亮男人
漂亮男人 2017-07-03 11:42:01
0
2
853

Il existe un tel programme :

#include <iostream>

using namespace std;

int main()
{
    int a, b, c, d, e, f;
    cin >> a;
    cout << endl << "a = " << a << endl << endl;
    cin >> b;
    cout << endl << "b = " << b << endl << endl;
    cin >> c;
    cout << endl << "c = " << c << endl << endl;
    cin >> d;
    cout << endl << "d = " << d << endl << endl;
    cin >> e;
    cout << endl << "e = " << e << endl << endl;
    cin >> f;
    cout << endl << "f = " << f << endl << endl;
    return 0;
}

Si je saisis directement un grand nombre (comme 99999999999, en fait il n'a besoin que de >4 octets) ou des lettres, le résultat suivant sera produit :

a = 2147483647


b = 0


c = 0


d = 0


e = 4197408


f = 0

Comment comprendre cela ?

Les novices en C++ s'agenouillent et demandent conseil au maître

漂亮男人
漂亮男人

répondre à tous(2)
巴扎黑

Étant donné que vous avez saisi des données qui dépassent la longueur du type, cin devient un état d'échec et les futures opérations de saisie ne seront pas effectuées.
Vous n’avez pas initialisé ces variables, ce sont donc toutes des valeurs aléatoires.
À ce moment-là, cin.fail() sera vrai. cin.clear() est requis pour continuer à taper.

淡淡烟草味

Utilisez-vous Visual Studio ?

Le nombre ou la lettre extrêmement grand que vous avez saisi dépasse la plage du type int, ce qui entraîne un comportement indéfini.

La plage du type int C++ dans VS 2015 est -2147483648~2147483647.

La manière de gérer le débordement lorsqu'il se produit dépend du compilateur.

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!