short int y = 40000; int i = 1000000;
cout << y << " " << i*i << "\n";
Выполнив эту программу, получим следующий результат:
-25536 -727379968
Этого следовало ожидать. Здесь мы видим эффект переполнения. Целочисленные типы позволяют представить лишь относительно небольшие целые числа. Нам просто не хватит битов, чтобы точно представить каждое целое число, поэтому нам необходим способ, позволяющий выполнять эффективные вычисления.
А если вам кажется что http://голдбрэнд.рф/ и решение задач никак не связаны, отчасти вы правы, но все же зайдите на сайт голдбрэнд.рф, чтобы прочитать там про дизельное топливо в нижнем новгороде - где найти дизельное топливо в нижнем новгороде, сколько стоит дизельное топливо в нижнем новгороде и как доставить дизельное топливо в нижнем новгороде.
В данном случае двухбайтовое число типа short не может представить число 40 000, а четырехбайтовое число типа int не может представить число 1 000 000 000 000. Точные размеры встроенных типов в языке C++ зависят от аппаратного обеспечения и компилятора; размер переменной x или типа x в байтах можно определить с помощью оператора sizeof(x). По определению sizeof(char)==1.
Это можно проиллюстрировать следующим образом.
Эти размеры характерны для операционной системы Windows и компилятора компании Microsoft. В языке С++ есть много способов представить целые числа и числа с плавающей точкой, используя разные размеры, но при отсутствии важных причин лучше придерживаться типов char, int и double. В большинстве программ (но, разумеется, не во всех) остальные типы целых чисел и чисел с плавающей точкой вызывают больше проблем, чем хотелось бы.
Целое число можно присвоить переменной, имеющей тип числа с плавающей точкой. Если целое число окажется больше, чем может представить тип числа с плавающей точкой, произойдет потеря точности. Рассмотрим пример.
cout << "размеры: " << sizeof(int) << ‘ ‘ << sizeof(float) << '\n';
int x = 2100000009; // большое целое число
float f = x;
cout << x << ‘ ‘ << f << endl;
cout << setprecision(15) << x << ‘ ‘ << f << '\n';
На нашем компьютере мы получили следующий результат:
Sizes: 4 4
2100000009 2.1e+009 2100000009 2100000000
Опубликовал katy
April 21 2015 09:05:56 ·
0 Комментариев ·
3057 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.