• Типы данных в си. Типы данных и операции в языке си. выражения

    Для хранения различных данных в языках программирования используют переменные. Переменной называется область памяти, имеющая имя, которое иначе называют идентификатором.

    Давая переменной имя, программист одновременно тем же именем называет и область памяти, куда будут записываться значения переменной для хранения.

    Хорошим стилем является осмысленное именование переменных. Разрешается использовать строчные и прописные буквы, цифры и символ подчёркивания, который в Си считается буквой. Первым символом обязательно должна быть буква, в имени переменной не должно быть пробелов. В современных версиях компиляторов длина имени практически не ограничена. Имя переменной не может совпадать с зарезервированными ключевыми словами. Заглавные и строчные буквы в именах переменных различаются, переменные a и A - разные переменные.

    Зарезервированные ключевые слова auto double int struct break else long switch register tupedef char extern return void case float unsigned default for signed union do if sizeof volatile continue enum short while
    В языке Си все переменные должны быть объявлены. Это означает, что, во-первых, в начале каждой программы или функции Вы должны привести список всех используемых переменных, а во-вторых, указать тип каждой из них.

    При объявлении переменной компилятор отводит ей место в памяти в зависимости от её типа. Стандартными средствами AVR GCC работает с типами данных char (символьный тип) и int (целочисленный тип).

    Типы переменных

    Тип char

    char - является самым экономным типом. Тип char может быть знаковым и беззнаковым. Обозначается, соответственно, как "signed char " (знаковый тип) и "unsigned char " (беззнаковый тип). Знаковый тип может хранить значения в диапазоне от -128 до +127. Беззнаковый - от 0 до 255. Под переменную типа char отводится 1 байт памяти (8 бит).

    Ключевые слова (модификаторы) signed и unsigned указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый.

    Тип int

    Целочисленная величина int может быть short (короткой) или long (длинной).

    Ключевое слово (модификатор) short ставится после ключевых слов signed или unsigned . Таким образом, различают следующие типы: signed short int, unsigned short int, signed long int, unsigned long int .

    Переменная типа signed short int (знаковая короткая целая) может принимать значения от -32768 до +32767, unsigned short int (беззнаковая короткая целая) - от 0 до 65535. Под каждую из них отводится ровно по два байта памяти (16 бит).

    При объявлении переменной типа signed short int ключевые слова signed и short могут быть пропущены, и такой тип переменной может быть объявлен просто int . Допускается и объявление этого типа одним ключевым словом short .

    Переменная unsigned short int может быть объявлена как unsigned int или unsigned short .

    Под каждую величину signed long int или unsigned long int отводится 4 байта памяти (32 бита). Значения переменных этого типа могут находиться в интервалах от -2147483648 до 2147483647 и от 0 до 4294967295 соответственно.

    Существуют также переменные типа long long int , для которых отводится 8 байт памяти (64 бита). Они также могут быть знаковыми и беззнаковыми. Для знакового типа диапазон значений лежит в пределах от -9223372036854775808 до 9223372036854775807, для беззнакового - от 0 до 18446744073709551615. Знаковый тип может быть объявлен и просто двумя ключевыми словами long long .

    Тип Диапазон Шестнадцатиричный диапазон Размер
    unsigned char 0 ... 255 0x00 ... 0xFF 8 bit
    signed char
    или просто
    char
    -128 ... 127 -0x80 ... 0x7F 8 bit
    unsigned short int
    или просто
    unsigned int или unsigned short
    0 ... 65535 0x0000 ... 0xFFFF 16 bit
    signed short int или signed int
    или просто
    short или int
    -32768 ... 32767 0x8000 ... 0x7FFF 16 bit
    unsigned long int
    или просто
    unsigned long
    0 ... 4294967295 0x00000000 ... 0xFFFFFFFF 32 bit
    signed long
    или просто
    long
    -2147483648 ... 2147483647 0x80000000 ... 0x7FFFFFFF 32 bit
    unsigned long long 0 ... 18446744073709551615 0x0000000000000000 ... 0xFFFFFFFFFFFFFFFF 64 bit
    signed long long
    или просто
    long long
    -9223372036854775808 ... 9223372036854775807 0x8000000000000000 ... 0x7FFFFFFFFFFFFFFF 64 bit

    Переменные объявляют в операторе описания. Оператор описания состоит из спецификации типа и списка имён переменных, разделённых запятой. В конце обязательно должна стоять точка с запятой.

    Объявление переменной имеет следующий формат:

    [модификаторы] спецификатор_типа идентификатор [, идентификатор] ...

    Модификаторы - ключевые слова signed , unsigned , short , long .
    Спецификатор типа - ключевое слово char или int , определяющее тип объявляемой переменной.
    Идентификатор - имя переменной.

    Пример: char x; int a, b, c; unsigned long long y;
    Таким образом, будут объявлены переменные x , a , b , c , y . В переменную x можно будет записывать значения от -128 до 127. В переменные a , b , c - от -32768 до +32767. В переменную y - от 0 до 18446744073709551615.

    Инициализация значения переменной при объявлении

    При объявлении переменную можно проинициализировать, то есть присвоить ей начальное значение. Сделать это можно следующим образом. int x = 100; Таким образом, в переменную x при объявлении сразу же будет записано число 100.

    Лучше избегать смешивания инициализируемых переменных в одном операторе описания, то есть инициализируемые переменные лучше объявлять в отдельных строках.

    Константы

    Переменная любого типа может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const к спецификатору типа. Переменные с типом const представляют собой данные, используемые только для чтения, то есть этой переменной не может быть присвоено новое значение. Если после слова const отсутствует спецификатор типа, то константы рассматриваются как величины со знаком, и им присваивается тип int или long int в соответствии со значением константы: если константа меньше 32768, то ей присваивается тип int , в противном случае long int .

    Пример: const long int k = 25; const m = -50; // подразумевается const int m=-50 const n = 100000; // подразумевается const long int n=100000

    Присваивание

    Для присваивания в Си служит знак "=". Выражение, стоящее справа от знака присваивания, вычисляется, и полученное значение присваивается переменной, стоящей слева от знака присваивания. При этом предыдущее значение, хранящееся в переменной, стирается и заменяется на новое.

    Оператор "=" не следует понимать как равенство.
    Например, выражение a = 5; следует читать как "присвоить переменной a значение 5".

    Примеры: x = 5 + 3; // сложить значения 5 и 3, // результат присвоить переменной x (записать в переменную x) b = a + 4; // прибавить 4 к значению, хранящемуся в переменной a, // полученный результат присвоить переменной b (записать в переменную b) b = b + 2; // прибавить 2 к значению, хранящемуся в переменной b, // полученный результат присвоить переменной b (записать в переменную b)
    В правой части значение переменной может использоваться несколько раз: c = b * b + 3 * b;

    Пример: x = 3; // переменной x будет присвоено значение 3 y = x + 5; // к значению, хранящемуся в переменной x, будет прибавлено число 5, // полученный результат будет записан в переменную y z = x * y; // значения переменных x и y будут перемножены, // результат будет записан в переменную z z = z - 1; // от значения, хранящегося в переменной z, будет отнято 1 // результат будет записан в переменную z
    Таким образом, в переменной z будет храниться число 23

    Кроме простого оператора присваивания "=", в Си существует еще несколько комбинированных операторов присваивания: "+=", "-=", "*=
    Примеры: x += y; // то же, что и x = x + y; - сложить x и y // и записать результат в переменную x x -= y; // то же, что и x = x - y; - отнять от x значение y // и записать результат в переменную x x *= y; // то же, что и x = x * y; - умножить x на y // и записать результат в переменную x x /= y; // то же, что и x = x / y; - разделить x на y // и записать результат в переменную x x %= y; // то же, что и x = x % y; // вычислить целочисленный остаток от деления x на y // и записать результат в переменную x

    Инкремент и декремент

    Если необходимо изменить значение переменной на 1, то используют инкремент или декремент .

    Инкремент - операция увеличения значения, хранящегося в переменной, на 1.

    Пример: x++; // значение переменной x будет увеличено на 1 $WinAVR = ($_GET["avr"]); if($WinAVR) include($WinAVR);?>
    Декремент - операция уменьшения значения, хранящегося в переменной, на 1.

    Пример: x--; // значение переменной x будет уменьшено на 1
    Инкремент и декремент относятся к операциям присваивания. При использовании декремента и инкремента совместно с оператором присваивания "=" применяют постфиксную (x++) или префиксную (++x) запись. Первой выполняется префиксная запись.

    Примеры: y = x++;
    Предположим, что в переменной x хранилось значение 5. Тогда в y будет записано значение 5, после чего значение переменной x будет увеличено на 1. Таким образом, в y будет 5, а в x - 6. y = --x;
    Если в x хранилось значение 5, то сначала будет выполнено уменьшение x до 4, а затем это значение будет присвоено переменной y . Таким образом, x и y будет присвоено значение 4.

     Тип данных – это описание диапазона значений, которые может принимать переменная, указанного типа. Каждый тип данных характеризуется:
      1. количеством занимаемых байт(размером)
      2. диапазоном значений которые может принимать переменная данного типа.

    Все типы данных можно разделить на следующие виды:
      1. простые (скалярные) и сложные (векторные) типы;
      2. базовые (системные) и пользовательские(которые определил пользователь).
     В языке СИ систему базовых типов образуют четыре типа данных:
      1. символьный,
      2. целочисленный,
      3. вещественный одинарной точности,
      4. вещественный двойной точности.

    Подробное описание типов данных в языке СИ

    тип Символьный тип Целочисленный тип Вещественный тип одинарной точности Вещественный тип двойной точности
    описание char int float double
    размер 1 байт (8 бит) 4 байта (32 бита) 4 байта (32 бита)
    23 бита – мантисса;
    8 бит – порядок;
    1 бит – знак.
    8 байт (64 бита)
    52 бита – мантисса;
    11 бит – порядок;
    1 бит – знак.
    диапазон значений -128 ... 127 2147483648 ... 2147483647 ±3.4Е±38
    Точность до 7 знаков после запятой
    ±1.7Е±308
    Точность до 17 знаков после запятой

    В языке СИ предусмотрены модификаторы типов данных двух видов:
      1. модификаторы знака: signed и unsigned.
      2. модификаторы размера: short и long.
     Более подробно модификаторы типов описаны в таблице:

    Комплексные числа в СИ

     Комплексные числа введены в стандарте C99.
      float _Complex
      double _Complex
      long double _Complex
     Все это счастье находиться в библиотеке complex.h :)

    Минимальные и максимальные значения всех базовых типов данных языка СИ описаны в библиотеках: limits.h – содержит диапазоны целочисленных значений, float.h – содержит диапазоны вещественных значений.

    Логический тип данных в СИ

     Стандарт С89:

      Логический тип – int
       0 – ложь (false);
       не 0 – истина (true). Т.е как такового логического типа не создано, а вместо него используется int.
     Стандарт С99:
      Логический тип - _Bool
     Ключевые слова: bool true false
    А это счастье в библиотеке stdbool.h

    Операторы объявлений

     Переменная – именованная область памяти вычислительной машины, предназначенная для хранения значений определенного типа, с произвольным методом доступа: чтение и запись. Имя переменой – разрешенный идентификатор языка СИ не использовавшийся ранее для обозначения других переменных, типов, элементов перечислений или имен функций. Оператор объявления переменных имеет следующий синтаксис: тип имя1[,имя2[,...]]; Примеры:
     int a, b, c;
     double x, y;
     char ch;
     Есть некоторые негласные правила, т.е исполнения который является хорошим тоном, но делать это не обязательно:
      1. каждое объявление переменных нового типа начинается с новой строки;
      2. из названия переменной должно быть понятно зачем она и что в ней будет храниться(хотя иногда из-за таких вот информативных названий скорость написания кода падает, т.к некоторых заносит и они называют переменные целыми предложениями);
      3. поэтому появляется правило: название переменной не должно быть слишком длинным;
      4. после объявления переменной очень желательно в комментариях пометить зачем она;
      5. необходимо разделять имена переменных пробелами.
     Оператор объявления переменных с инициализацией имеет следующий синтаксис: тип имя1[=значение1][, имя2[=значение2][,...]]; Примеры:
     int a=26, b=032, c=0x1A;
     double x=2.5e2,y=0x1.ffe-3;
     char ch=’Z’;

    Константы в СИ

     В языке СИ присутствует три вида констант:
      1. целочисленные,
      2. вещественные,
      3. символьные.
     Целочисленные константы
      1. Десятичная константа указывается десятичным числом в обычной форме.
      2. Восьмеричная константа указывается числом, начинающимся с цифры ноль и содержащим цифры 0...7.
      3. Шестнадцатеричная константа указывается целым числом с префиксом 0x или 0X, содержащим цифры 0...9 и буквы латинского алфавита a...f, A...F.
     Вещественные константы записываются в десятичной или шестнадцатеричной системе исчисления. Позиция запятой указывается точкой, экспонента указывается после латинской буквы e (или E). Символьным константам предшествует символ \, это так называемое "экранирование" . В языке СИ присутствуют специальные символы:
      ‘\’’ – одинарная кавычка,
      ‘\”’ – двойная кавычка,
      ‘\\’ – обратный слеш,
      ‘\?’ – знак вопроса,
      ‘\a’ – звуковой сигнал,
      ‘\b’ – удаление символа,
      ‘\f’ – прокрутка страницы,
      ‘\n’ – перевод строки,
      ‘\r’ – возврат каретки в начало строки,
      ‘\t’ – горизонтальная табуляция,
      ‘\v’ – вертикальная табуляция.

    В языке СИ можно также создавать переменные, имеющие константное значение (их значение нельзя изменить). Объявление таких «переменных» имеет следующий синтаксис: const тип имя1=значение1[,имя2=значение2[,...]]; Примеры:
      const unsigned int x=80, y=25;
      const double pi=3.1415;

    Оператор создания типов данных в СИ

     Оператор typedef используется для создания пользовательских типов данных, синтаксис его использования: typedef имя_старого_типа имя_нового_типа; Пример:
      typedef unsigned int word;
     В СИ согласно стандарту, определение типов может производиться практически в любом месте программы(т.е нет строго определенного блока для определения типов данных).Функция для определения размера типа, или переменной какого-либо типа: sizeof, она возвращает количество занимаемых байт в памяти. Пример:
      sizeof(int) //вернет 4
      sizeof(char) //результат 1
      sizeof(double) // вернет 8

    В этой записи-шпаргалке приведены сведения об основных типах данных языка программирования C++ и особенности их реализации. Также, в конце записи составлена таблица с диапазонами значений этих типов.

    Концепция типа данных

    Основная цель любой программы состоит в обработке данных. Данные различного типа хранятся и обрабатываются по-разному. В любом алгоритмическом языке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.

    Тип данных определяет:

    • внутреннее представление данных в памяти компьютера;
    • множество значений, которые могут принимать величины этого типа;
    • операции и функции, которые можно применять к величинам этого тина.

    Исходя из этих характеристик, программист выбирает тип каждой величины, используемой в программе для представления реальных объектов. Обязательное описание типа позволяет компилятору производить проверку допустимости различных конструкций программы. От типа величины зависят машинные команды, которые будут использоваться для обработки данных.

    Все типы языка C++ можно разделить на основные и составные . В языке C++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.

    Основные типы данных в C++

    Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие :

    1. int (целый);
    2. char (символьный);
    3. wchar_t (расширенный символьный);
    4. bool (логический);
    5. float (вещественный);
    6. double (вещественный с двойной точностью).

    Первые четыре тина называют целочисленными (целыми ), последние два - типами с плавающей точкой . Код, который формирует компилятор для обработки целых величин, отличается от кода для величин с плавающей точкой.

    Существует четыре спецификатора типа , уточняющих внутреннее представление и диапазон значений стандартных типов:

    • short (короткий);
    • long (длинный);
    • signed (знаковый);
    • unsigned (беззнаковый).

    Целый тип (int)

    Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного - 4 байта.

    Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном - int и long int.

    Внутреннее представление величины целого типа - целое число в двоичном коде. При использовании спецификатора signed старший бит числа интерпретируется как знаковый (0 - положительное число, 1 - отрицательное). Спецификатор unsigned позволяет представлять только положительные числа, поскольку старший разряд рассматривается как часть кода числа. Таким образом, диапазон значений типа int зависит от спецификаторов. Диапазоны значений величин целого типа с различными спецификаторами для IBM PC-совместимых компьютеров приведены в таблице «Диапазоны значений простых типов данных» в конце записи.

    По умолчанию все целочисленные типы считаются знаковыми, то есть спецификатор signed можно опускать.

    Константам, встречающимся в программе, приписывается тот или иной тип в соответствии с их видом. Если этот тип по каким-либо причинам не устраивает программиста, он может явно указать требуемый тип с помощью суффиксов L, l (long) и U, u (unsigned). Например, константа 32L будет иметь тип long и занимать 4 байта. Можно использовать суффиксы L и U одновременно, например, 0x22UL или 05Lu.

    Примечание

    Типы short int, long int, signed int и unsigned int можно сокращать до short, long, signed и unsigned соответственно.

    Символьный тип (char)

    Под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от О до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASCII. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов.

    Расширенный символьный тип (wchar_t)

    Тип wchar_t предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например, Unicode. Размер этого типа зависит от реализации; как правило, он соответствует типу short. Строковые константы типа wchar_t записываются с префиксом L, например, L»Gates».

    Логический тип (bool)

    Величины логического типа могут принимать только значения true и false, являющиеся зарезервированными словами. Внутренняя форма представления значения false - 0 (нуль). Любое другое значение интерпретируется как true. При преобразовании к целому типу true имеет значение 1.

    Типы с плавающей точкой (float, double и long double)

    Стандарт C++ определяет три типа данных для хранения вещественных значений: float, double и long double.

    Типы данных с плавающей точкой хранятся в памяти компьютера иначе, чем целочисленные. Внутреннее представление вещественного числа состоит из двух частей - мантиссы и порядка. В IBM PC-совместимых компьютерах величины типа float занимают 4 байта, из которых один двоичный разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Мантисса - это число, большее 1.0, но меньшее 2.0. Поскольку старшая цифра мантиссы всегда равна 1, она не хранится.

    Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка - его диапазон. Как можно видеть из таблицы в конце записи, при одинаковом количестве байт, отводимом под величины типа float и long int, диапазоны их допустимых значений сильно различаются из-за внутренней формы представления .

    Спецификатор long перед именем типа double указывает, что под его величину отводится 10 байт.

    Константы с плавающей точкой имеют по умолчанию тип double. Можно явно указать тип константы с помощью суффиксов F, f (float) и L, l (long). Например, константа 2E+6L будет иметь тип long double, а константа 1.82f - тип float.

    Для написания переносимых на различные платформы программ нельзя делать предположений о размере типа int. Для его получения необходимо пользоваться операцией sizeof, результатом которой является размер типа в байтах. Например, для операционной системы MS-DOS sizeof (int) даст в результате 2, а для Windows 98 или OS/2 результатом будет 4.

    В стандарте ANSI диапазоны значений для основных типов не задаются, определяются только соотношения между их размерами, например:

    sizeof(float) ≤ slzeof(double) ≤ sizeof(long double)
    sizeof(char) ≤ slzeof(short) ≤ sizeof(int) ≤ sizeof(long)

    Примечание

    Минимальные и максимальные допустимые значения для целых типов зависят от реализации и приведены в заголовочном файле (), характеристики вещественных типов - в файле (), а также в шаблоне класса numeric_limits

    Тип void

    Кроме перечисленных, к основным типам языка относится тип void, но множество значений этого типа пусто. Он используется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения типов.

    Диапазоны значений простых типов данных в C++ для IBM PC-совместимых компьютеров

    Q: Что означает термин IBM PC-совместимый компьютер?
    A: IBM PC-совместимый компьютер (англ. IBM PC compatible) - компьютер, архитектурно близкий к IBM PC, XT и AT. IBM PC-совместимые компьютеры построены на базе микропроцессоров, совместимых с Intel 8086 (а, как известно, все выпущенные позднее процессоры Intel имеют полную обратную совместимость с 8086). По сути это практически все современные компьютеры.

    Различные виды целых и вещественных типов, различающиеся диапазоном и точностью представления данных, введены для того, чтобы дать программисту возможность наиболее эффективно использовать возможности конкретной аппаратуры, поскольку от выбора типа зависит скорость вычислений и объем памяти. Но оптимизированная для компьютеров какого-либо одного типа программа может стать не переносимой на другие платформы, поэтому в общем случае следует избегать зависимостей от конкретных характеристик типов данных.

    Тип Диапазон значений Размер (байт)
    bool true и false 1
    signed char -128 … 127 1
    unsigned char 0 … 255 1
    signed short int -32 768 … 32 767 2
    unsigned short int 0 … 65 535 2
    signed long int -2 147 483 648 … 2 147 483 647 4
    unsigned long int 0 … 4 294 967 295 4
    float 3.4e-38 … 3.4e+38 4
    double 1.7e-308 … 1.7C+308 8
    long double 3.4e-4932 … 3.4e+4932 10

    Для вещественных типов в таблице приведены абсолютные величины минимальных и максимальных значений.

    Пожалуйста, приостановите работу AdBlock на этом сайте.

    Чтобы хранить в своей программе какие-либо данные, вам понадобятся переменные. Прежде всего, нужно научиться эти переменные в программе создавать. Другими словами, вспоминая нашу аналогию с коробками, чтобы в коробку что-то положить, её, эту самую коробку, хорошо бы сначала где-нибудь раздобыть.

    В книжках по программированию процесс создания переменной называют объявлением переменной . Это словосочетание хорошо бы знать, чтобы понимать профессиональную литературу и речь других программистов. Но ещё более важно понимать, что за этим словосочетанием скрывается.

    Как объявить переменную?

    Для того чтобы объявить переменную, необходимо указать её тип и записать её имя. Ну и не забыть поставить ";". Общая стуктура объявления переменной показана на следующем рисунке.

    Рис.1. Общий синтаксис объявления переменной.".

    В примере на рисунке мы создаём переменную с именем num, в которой можно будет хранить целые числа. На то, что мы собираемся использовать переменную для хранения целых чисел, указывает тип данных int.

    Ещё парочка примеров:

    Листинг 1. Объявление переменных

    Int z; // переменная z целого типа char w; // переменная w символьного типа

    Для имён переменных есть одно правило, которое надо будет запомнить.

    В качестве имени переменной может выступать любая последовательность символов латинского алфавита, цифр и знака нижнего подчеркивания "_", которая начинается с буквы.

    На самом деле, на имя переменной есть дополнительные ограничения, но мы пока в такие детали вдаваться не будем. Давайте лучше посмотрим на примеры правильных и неправильных имён.

    Правильные имена переменных

    Peremennaya, flag, f3, var4, KolichestvoBukv, fd4s, FLaG, key_number

    Неправильные имена переменных

    2num – начинается с цифры
    num flat – содержит пробел в имени
    nomer-telefona – содержит дефис

    И ещё один важный момент. В языке программирования Си регистр букв очень важен. Например, переменные с именами flag, FLAG, FlAg, fLAg -- это всё различные переменные. Кроме того, есть ряд слов, которые нельзя использовать для названия переменных. Например, int, void, return и другие. Это специальные ключевые слова , которые зарезервированы для нужд самого языка и нигде в другом месте не могу быть использованы.

    Кстати, за одно объявление можно создать сразу несколько переменных одного типа.

    Листинг 2. Объявление нескольких переменных

    Int a,c; // объявляем переменные a и c целого типа double x, y, z; // объявляем сразу три вещественные переменные

    Всё просто и логично. Сначала указывает тип переменных, а потом их имена, разделённые запятой.

    Переменная в памяти компьютера.

    Пару слов о том, как выглядит объявление переменной с точки зрения компьютера.

    Можно считать, что при объявлении мы сообщаем компьютеру, чтобы он выделил под переменную место в памяти и связал это место определенным именем. Количество места, которое будет выделено в памяти для хранения переменной, зависит от типа этой переменной. Проиллюстрируем эту мысль следующим рисунком.

    Листинг 3. Объявление двух переменных

    Int w; // объявляем целочисленной переменной w double z; // объявляем вещественной переменной z

    Рис.3. Переменные в памяти компьютера.

    На рисунке условно изображена память компьютера как набор ячеек, в каждой из которых может что-то храниться. При этом вещественная переменная занимает две ячейки, а целочисленная всего одну. Это соотношение (два к одному) условное. На самом деле, в вашем компьютере переменная вещественного типа может занимать, например, в четыре раза больше места в памяти, чем целочисленная переменная.

    Практика

    Решите предложенные задачи: Для удобства работы сразу переходите в полноэкранный режим

    Исследовательские задачи для хакеров

    1. Объявите в программе переменную с неправильным именем и попробуйте скомпилировать программу. Посмотрите, какую ошибку выдаст компилятор.
    2. Найдите список всех ключевых слов языка Си. Можно искать в стандарте языка(подсказка: "keywords"), а можно в интернете. Запоминать наизусть их не нужно, но разок посмотреть на них стоит.