Гайд Потеря точности // Диапазон числовых типов // Автоматические объявления - Урок#2

int main(int nNumberofArgs, char pszArgs[])
Забаненный
Статус
Оффлайн
Регистрация
23 Мар 2018
Сообщения
759
Реакции[?]
173
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В этом уроке я дорасскажу прошлый урок, постараюсь не совершать прошлых ошибок, на которые мне указали. Madison1337 , ты меня больше так не пугай).
Опять же, начнем, но для начала - прочитайте это .
Потеря точности.​
Сразу скажу, действительные переменные не могут решить всех вычислительных проблем. К примеру, точность float ограничена шестью разрядами, есть и расширенный разряд - double, может содержать 13 разрядов.
Чтобы понять эту проблему, представим 1/3 в виде бесконечной последовательности 0.33333... Однако, в программировании, в отличие от математики понятие периода не имеет смысла , так как точность компьютерных вычислений ограничена, где-то наша бесконечная дробь должна оборваться. Следовательно, усреднив числа 1,2,2, мы получим не точное, а приблизительное значение 1,666667. В некоторых случаях, ошибки округления может исправить сам С++; например, выводя информацию на экран С++ вместо числа 0,9998... может выдать значение 1.
Диапазон числовых типов.​
Давайте рассмотрим диапазон числовых типов Microsoft Visual Studio. ( Это вы сможете прочесть на сайте Microsoft:
Пожалуйста, авторизуйтесь для просмотра ссылки.
)
Попытка вычисления значения за пределами допустимого диапазона для данного типа называется переполнением. Стандарт С++ обычно оставляет результат переполнения неопределенным, то есть компилятор в праве самостоятельно решать, как поступить в этом случае. Это еще один пример из множества гибкости С++, в отличии от других ЯП, которую обеспечили его разработчики.
На платформе ПК переполнением при работе с числами с плавающей точкой приводит к генерации исключения, которое, будучи не обработанным, вызовет остановку вашей программы. Как ни странно выглядит остановка программы, переполнением в случае целых чисел куда хуже, С++ выдаст неверное значение.
Автоматические объявления.​
В прошлом уроке я кое-что забыл вам рассказать. Что же такое объявление и инициализация?
Объявление в С++ - это инструкция, которая определяет переменную.
Во время объявления переменных можно сообщить им значение путем помещения знака равенства и константы после имени переменной. Этот процесс называется инициализацией. Ну а теперь к блоку "Автоматические объявления".
Давайте рассмотрим это объявление:
Код:
int Var = 1;
Тут некоторые могли бы спросить, почему бы С++ не вывести данный тип переменной самостоятельно? Ответ на вопрос: Почему бы и нет?. Вы можете сделать это написав так:
Код:
auto Var = 1;
auto Var2 = 2L;
Это означает, что переменная Var объявлена, как тот же тип, что и константа 1, а переменная Var 2 - как тот же тип, что и константа 2L.
Так же, есть очень интересная особенность С++. Если вы хотите объявить переменную того же типа, что некоторую другую переменную, то для этого вы можете воспользоваться словом decltype();
Код:
int Var;
decltype(Var) Var2;   //переменная Var2 имеет тот же тип, что и переменная Var
C++ заменяет decltype(Var) типом переменной Var (в нашем случае int)
На этом всё. В следующем уроке мы точно разберем нашу первую программу. Так же пишите, где я мог допустить ошибку, всем удачи и спасибо за прочтение.
 
Последнее редактирование:
int main(int nNumberofArgs, char pszArgs[])
Забаненный
Статус
Оффлайн
Регистрация
23 Мар 2018
Сообщения
759
Реакции[?]
173
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
что это за хуйня ваще?
в шапке написано хд.
Это некое дополнение к прошлой теме для более прошаренных. Некст тема уже будет с первой программой, где я объясню что за что отвечает
 
1 3 3 7
Пользователь
Статус
Оффлайн
Регистрация
29 Авг 2018
Сообщения
260
Реакции[?]
117
Поинты[?]
0
Согласен, это уже мало кому известно.. Даже мне xd
 
Сюда что-то написать надо, да?
Начинающий
Статус
Оффлайн
Регистрация
11 Янв 2018
Сообщения
48
Реакции[?]
12
Поинты[?]
0
Расскажи про среду разработки поподробнее. Тот же Visual Studio, может кому полезно будет, а так красава. )
 
int main(int nNumberofArgs, char pszArgs[])
Забаненный
Статус
Оффлайн
Регистрация
23 Мар 2018
Сообщения
759
Реакции[?]
173
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу