Плывущий C ++ Excepción de coma

Estoy comenzando подставляют la programación en C ++ y меня surgió la siguiente duda. Tengo este código:

// Determina multiplos

#include <iostream>
using namespace std;

int main(){
    int num1 = 0;
    int num2 = 0;

    cout << "Ingrese dos numeros: ";
    cin >> num1 >> num2;
    if (num1 % num2 == 0) cout << num1 << " es multiplo de " << num2 << endl;
    if (num1 % num2 != 0) cout << num1 << " no es multiplo de " << num2 << endl;

    return 0;
}

Estoy probando ingresando доблесть erróneos. Por ejemplo, СИ ambas переменные десятичные числа les paso números, o únicamente а-ля primera, VS Code я tira "плывущий Excepción de coma ('ядро generado'). Эмбарго греха, si el primer número es un entero, y десятичное число Эль-Сегундо, я trunca Эль-Сегундо y funciona lo más bien.

qué se debe esta diferencia?

Muchas gracias. Saludos.

2
задан 20.12.2019, 09:12
1 ответ

Это происходит с тобой, потому что ты заставляешь бить козырем извлечение целых чисел там, где находится запятая десятичных или характер, который не является числовым и не ENTER, который закончит извлечение.

В первом случае, извлек бы целую часть первого числа как num1 и не удался бы начиная с точки или запятой десятичных, оставляя num2, не извлекая. Поскольку ты это инициализируешь в нуль, ты делаешь операцию, которая производит исключение: num1 % num2.

Во втором случае, извлекает первое целое число, и целую часть второго, и заканчивает тем, что не удается, найдя запятую или десятичную точку. Как результат у тебя есть num1 наполнение и num2 с целой частью второго числа. Дело не в том, что он отсек это тебе, дело в том, что тебя бьет козырем извлечение и там задерживается, не извлекая больше.

Согласно документации, эти вещи производят неожиданные эффекты.

5
ответ дан 21.12.2019, 12:13
  • 1
    Совершенный, большое спасибо! Приветствие. – madhatter 21.12.2019, 05:37

Теги

Похожие вопросы