Инициализация, присваивание и объявление переменной в Си, ошибки
Правильная инициализация переменной в С имеет важное значение. Потому что если ее сделать некорректно, тогда программа на С будет работать с ошибками или вообще не будет работать. Поэтому сегодня в статье поговорим о переменных в С.
Напомним, переменная — это имя «куска памяти», который будет временно сохранять какую-то информацию. Работа переменных тесно связана с оперативной памятью устройства. Когда мы объявляем переменную в коде, то, фактически, мы говорим компилятору в устройстве: «выдели немного оперативной памяти вот для такого-то значения». Если в момент объявления переменной сделать какую-то ошибку, тогда может возникнуть проблема с оперативной памятью. Допустим, выделится недостаточное количество памяти или, наоборот, переменная у потребит слишком много памяти и др.
Инициализация переменной в С
Почему важна правильная инициализация переменной в С? Любая информация, которая попадает внутрь компьютер а, преобразуется в последовательность битов. Бит — это минимальное значение в памяти, которое может быть двух значений: «0» или «1». Если рассмотреть какой-то «кусок памяти» в компьютере, тогда можно увидет ь, что он похож на нечто такое: «010110110011001110100110».
Когда мы объявляем переменную, мы просим выделить ей какое-то количество памяти. Однако мы не указываем необходимое количество памяти в битах, а указываем тип переменной. Компилятор самостоятельно определяет сколько и каким образом нужно выделить памят и для вашей переменной, основываясь на ее типе.
Инициализация переменной в С — это объявление ее типа и одновременное присвоение ей значения. Таким образом, для разработчика важно определить к какому типу данных относится его переменная, а обо всем остальном заботятся компилятор и процессор.
Основные типы переменных в С
- размер выделенной памяти зависит от типа переменной;
- представление переменной в памят и также зависит от типа переменной.
- «char» с размером 1 байт;
- «short» с размером 2 байта;
- «int» с размером 4 байта;
- «long» с размером 4 байта;
- «long long» с размером 8 байт.
- «float» с размером в 4 байта;
- «long float» с размером в 8 байт;
- «double» с размером в 8 байт;
- «long double» с размером в 8 байт.
Как происходит объявление, присвоение и инициализация переменной в С
- тип переменной;
- имя переменной.
- «Копирующая инициализация». Происходит при помощи знака «равно» и выглядит вот так: «int myVar = 7».
- «Прямая инициализация». Происходит при помощи «круглых скобок» и выглядит вот так: «int myVar(7);».
Заключение
Сегодня мы познакомились с особенностями переменных в языке программирования С. В частности, вы могли увидеть как проходит объявление, присвоение и инициализация переменной в С.
При работе с переменными в С, нужно обязательно запомнить, что определение их типа имеет ключевое значение.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Инициализация переменных
Во время объявления переменных можно сообщить им значение путем помещения знака равенства и константы после имени переменной. Этот процесс называется инициализацией и в общем случае имеет вид:
тип имя_переменной — константа;
Ниже приведено несколько примеров
float balance = 123.23;
Глобальные и статические глобальные переменные инициализируются только при запуске программы. Локальные переменные инициализируются каждый раз при входе в блок, где они были объявлены. Статические локальные переменные инициализируются только один раз, а не каждый раз при входе в блок. Глобальные и статические локальные переменные инициализируются нулем, если не указано инициализационное значение. Неинициализирующиеся нестатические локальные и регистровые переменные будут иметь неопределенное значение.
Инициализация переменных в С++
Существует два очень похожих понятия: объявление и определение.
Объявление — это описание сущности. Объявление уведомляет компилятор о ее существовании и свойствах.
int x; double y;
При объявлении переменной мы можем присвоить ей значение в этот же момент. Это называется инициализацией переменной.
Существует 3 способа инициализации переменной в С++.
- Способ №1: Копирующая инициализация (или «инициализация копированием») с помощью знака равенства = :
int x = 5; // копирующая инициализация
- Способ №2: Прямая инициализация с помощью круглых скобок () :
int x(5); // прямая инициализация
Способ №3: Uniform инициализация с помощью фигурных скобок <> :
int x; // uniform инициализация
Прямая или копирующая инициализация работают не со всеми типами данных (например, вы не сможете использовать эти способы для инициализации списка значений). В попытке обеспечить единый механизм инициализации, который будет работать со всеми типами данных, в C++11 добавили uniform-инициализацию.
В uniform-инициализации есть одно важное преимущество: вы не сможете присвоить переменной значение, которое не поддерживает её тип данных — компилятор выдаст предупреждение или сообщение об ошибке. Например:
int x; // ошибка компилятора
Однако, если вы уже создали переменную и хотите присвоить ей значение (не в момент объявления), то будет работать только копирующая инициализация:
int x; x = 4;
В одном выражении можно объявить сразу несколько переменных одного и того же типа данных, разделяя их имена запятыми. Кроме того, вы даже можете инициализировать несколько переменных в одной строке:
int a = 1, b = 2; int c(3), d(4); int e, f;
Где объявлять и инициализировать переменные?
Более старые версии компиляторов языка Си вынуждали пользователей объявлять все переменные в верхней части функции. Сейчас это уже неактуально. Современные компиляторы не требуют, чтобы все переменные обязательно были объявлены в самом верху функции. В языке С++ приоритетным является объявление, а также инициализация переменных как можно ближе к их первому использованию.
int main() < cout > x; cout > y; cout
Объявляйте переменные как можно ближе к их первому использованию.
Что касается присвоения значений прееменным, то рекомендуется инициализировать переменные, когда они определены, например int i = 0 ;, и переменные следует всегда инициализировать перед использованием.