#cpp #c
Вопрос такой: Как считать с консоли целое число, которое влезает в диапазон int? То есть, как обработать ситуацию ввода с консоли большой последовательности чисел которая не влезает в int? scanf_s("%d", &n) Вводим сюда 9999999999999999999999999999999999 например и получаем нестабильную работу программы. Как с этим бороться?
Ответы
Ответ 1
Не используйте scanf_s() используйте функции read() getc() fgets() проверяйте введенный массив, а потом преобразуйте int в char используй stroul()Ответ 2
Тип int и правда платформозависимый. Размер int(и не только) для Вашего ПК можно узнать через функцию sizeof(). Она описана в stdio.h Пример: /* кол. байтов на данном ПК для разных типов данных */ printf("int = %lu, float = %lu, double = %lu \n", sizeof(int), sizeof(float), sizeof(double)); Сравнивая размер вводимых чисел с размеров ячейки для Вашего ПК можно отсечь ИМХО ненужное (не int).Ответ 3
Платформонезависивомого решения для языков С и С++ вы не найдете эти языки переполнение типа не считают ошибкой и исключительных ситуаций для этого не предусмотрено. Выход только один это писать свой платформозависимый обработчик на ассемблере, в процессоре для этого есть флаг переполнения в регистре флагов вот его то и можно использовать.
Комментариев нет:
Отправить комментарий