Статьи
113 прочтений · 1 год назад
Обзор целочисленных типов данных фиксированной ширины
В предыдущих статьях мной неоднократно утверждалось, что стандарт С++ гарантирует минимальный размер для целочисленных типов данных, но он может быть больше в зависимости от выбранной операционной системы. Такое решение пришло в С++ из родительского языка С. В то время, возможность менять размеры целочисленных типов данных была важна для разработчиков компиляторов. Компьютеры были медленные и это был отличный вариант для повышения производительности при создании компилятора под конкретную архитектуру...
88 прочтений · 1 год назад
Обзор беззнаковых целочисленных типов данных: правила определения, споры о переполнении и область применения
В предыдущей статье мы коснулись целочисленных типов данных со знаком, узнали их правила написания, диапазон значений. Посмотрели, как работает операция деления с целочисленными типами и коснулись процесса переполнения памяти при выходе за пределы диапазона. Сегодняшняя статья посвящена беззнаковым целочисленным типам данных. С++ позволяет нам использовать такие типы. Внутри переменных с беззнаковыми типами можно хранить только неотрицательные значения. Правила определения беззнаковых целочисленных...
104 прочтения · 1 год назад
Обзор целочисленных типов со знаком: их размеры, правила написания, операция деления и процесс переполнения значений
Целочисленное значение в С++ – это тип данных, позволяющий хранить внутри целые числа с положительными и отрицательными знаками, включая 0. В С++ доступно четыре базовых целочисленных типа. Главное отличие всех встроенных целочисленных типов в том, что они разного битового размера. Чем больше размер целочисленного типа, тем больший диапазон значений он может хранить внутри. Минимальные размеры целочисленных типов данных в C++: Напомню, что стандарт С++ гарантирует минимальный размер типов данных,...
128 прочтений · 1 год назад
Типы данных: Гарантированный минимальный размер базовых типов в C++ и его определение с помощью оператора sizeof
В предыдущей статье, мы познакомились с базовыми типами данных и узнали, что организация памяти на современных компьютерах построена по блочному принципу. Каждый блок имеет свой уникальный адрес и представлен одним байтом, а каждый байт в свою очередь 8-ю битами. Вполне корректно было представлять, что память это эдакий рай почтальона, в котором множество почтовых ящиков, в каждом из которых хранятся отдельные данные. Однако, это не совсем так. Правда в том, что большинство базовых типов данных занимают больше одного байта памяти...
69 прочтений · 1 год назад
Базовые типы данных в С++
Разбирая переменные, как объект, мы касались вопроса памяти и говорили о том, что определение переменной позволяет выделить часть оперативной памяти (RAM) под нужды этой самой переменной. У памяти компьютера есть наименьшая единица — бит. Внутри бита может содержаться только 2 значения: 0 или 1. Некоторые учебные пособия, а так же популярный курс Гарварда по основам программирования CS50 проводит параллель от бита к лампочке. Лампочка либо горит — значение 1, либо не горит — значение 0. Курс CS50 можно найти на просторах YouTube...
115 прочтений · 1 год назад
Основы С++: Способы защиты заголовочных файлов
В статье "Предварительное объявление функций и изменение порядка их определения" мы рассмотрели правило одного определения (ODR), которое гласит что каждая переменная или функция может иметь только одно определение. Повторная идентификация функции, закономерно, приведет к ошибке компиляции. Такую ошибку легко исправить, если... Если она не вызвана определением через #include, то есть через заголовочные файлы. В случае с заголовочными файлами, можно легко попасть в ситуацию, когда внутри заголовка, который вы решили использовать, включен еще один заголовок...
352 прочтения · 1 год назад
Основы С++: Знакомство с заголовочными файлами, создание пользовательских заголовков и повторение пройденного материала
В большинстве больших проектов (программ) возникает множество ситуаций, когда программисту требуется делать большое количество предварительных объявлений функций и переменных. Часто функции определены в других файлах. Постоянно предварительно объявлять их становится утомительно. К тому же это может повлечь за собой множество ошибок в процессе написания кода. Процесс предварительного объявления упрощается с помощью использования заголовочных файлов, именно в них помещаются все предварительные объявления...
746 прочтений · 1 год назад
Основы С++: Директивы препроцессора и знакомство с макросами
Для того, чтобы ваш код превратился посредством компиляции в рабочую программу, он должен пройти несколько важных преобразований. Они называются этапами трансляции. Подробнее о трансляции можно почитать в официальной документации вот здесь. В одну из фаз трансляции в работу включается препроцессор. Когда начинается его работа, он просматривает файл кода в поисках директив, оставленных программистом для него. После чего, препроцессор исполняет все директивы. В каждой программе с вводом и выводом...
139 прочтений · 1 год назад
Основы С++: Знакомство с пространствами имен. Как и почему возникают конфликты имен?
В С++ к именам выставляются определенные требования. Среди них мы обнаруживаем такое, как однозначность. Что это значит? Рассмотрим на простом примере: Представьте, что вы приехали в новый для вас город по своим делам. Вам нужно попасть по адресу: улица Яблоневая, дом 32. Вы вбиваете адрес в приложение такси, вызываете машину. Вас привозят по адресу. И вдруг оказывается, что по этому адресу вы не можете решить свои дела. Потому что в этом городе две Яблоневых улицы. Вы возмущены! Вам кажется это сюрреалистичным? И этого действительно не произойдет в реальности...
232 прочтения · 1 год назад
Основы С++: Первый пример программы с несколькими файлами исходного кода
В прошлой статье, рассматривая правило ODR, мы впервые упомянули возможность создания нескольких файлов в исходном коде для написания одной программы. Это действительно практикует повсеместно. Программы усложняются и программисты для организации кода используют различное количество файлов с ним, которые потом компилируются в одну целостную программу. В этой статье мы создадим еще один файл с исходным кодом. Я буду пользоваться IDE Visual Studio от Microsoft, а вы, если используете другую IDE, найдите в интернете способ создать в ней дополнительный файл в вашем тестовом проекте...
140 прочтений · 1 год назад
Основы С++: Предварительное объявление функций и изменение порядка их определения
Зачастую в программах требуется рассказать компилятору о функции заранее, не объявляя ее. Возьмем эту простую программу, как пример: Когда вы напишите эту программу у себя. Вероятно, ваш редактор кода так же как и мой, не подчеркнет ошибку ни в одной из строк. Однако, стоит вам попробовать скомпилировать программу, как вы получите следующее: Когда компилятор достиг строки 4. Он просто не смог найти идентификатор (функции) diffrerence. Да, скажете вы, странно, ведь ниже в строке 6 мы определили его? Но все дело в том, что компилируется программа построчно...
62 прочтения · 1 год назад
Основы С++: Знакомство с аргументами и параметрами функций
В прошлой статье мы научились возвращать значения из функций. Мы написали простую программу, которая просила пользователя ввести число и после чего выводила квадрат введенного числа на экран. Для инструкций, которые будут запрашивать число и принимать его с консоли в переменную input, мы использовали отдельную функцию EnterNumber(). Мы вызывали ее через переменную num из функции main(), помещая ее в блок инициализации: int num{EnterNumber()}. Тем самым мы запускали выполнение инструкций внутри EnterNumber...