Maison  >  Questions et réponses  >  le corps du texte

Questions sur l'entrée C++

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

漂亮男人漂亮男人2637 Il y a quelques jours820

répondre à tous(2)je répondrai

  • 巴扎黑

    巴扎黑2017-07-03 11:44:01

    É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.

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-07-03 11:44:01

    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.

    répondre
    0
  • Annulerrépondre