Переменные и типы данных в Си

мая 2, 2012  |  Published in Си и C++

gnu-c

Из серии:

  1. Введение в программирование на Си
  2. Переменные и типы данных в Си
  3. Операторы, условия и циклы языка Си

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

Переменные

Переменные — это именованные, понятные человеку ссылки на данные. Переменные в языке Си являются статическим и строготипизированными. На практике это проявляется в следующем:

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

Если сравнивать переменные Си и Ruby, то они весьма отличаются друг от друга. Например переменные в Ruby являются не статическими, но динамическими и не типизированными. Переменная в Ruby может ссылаться на любой тип данных и постоянно менять его. Это связано с тем, что в Ruby переменная не резервирует область памяти, а ссылается на объект в виртуальной таблице объектов. Визуально это можно представить себе как две таблицы, одна содержит два столбца, в одном хранятся все объекты (их данные), а в другом — идентификатор object_id. Во второй таблице у нас имеются также два столбца, в одном хранится object_id, а в другом имя переменной. Когда вы присваиваете переменной другое значение, то во второй таблице напротив имени переменной просто меняется object_id. В Си все совсем иначе. Переменная при объявлении захватывает область памяти, размер которой соответствует типу переменной, например 1 байт. Далее переменная ссылается на эту область данных, а вы можете помещать в нее любое значение.

Read the rest of this entry »

Tags: , , , ,

Программирование на языке Си: Первичные типы данных в Си

октября 29, 2011  |  Published in Си и C++

programming cПочти в любом языке программирования данные обладают определенным типом. Типы данных необходимы для того, чтобы различать в наборе битов и байтов символы, числа и структуры данных. Кроме того, типы данных позволяют более рационально использовать память.

Первичные типы данных в Си включают в себя:

Целочисленные типы (integer)
Целочисленные типы используются для хранения чисел в диапазоне определяемом компилятором. Традиционно целые числа занимают 2 байта памяти и значения, которые относятся к типу int находятся в диапазоне от -32768 до +32767. Тип signed int (целое со знаком) использует один бит для хранения знака числа и 15 бит для хранения самого числа. Помимо канонического int, Си имеет еще 2 integer-типа данных:

- short int
- long int

Все три типа имеют как форму со знаком, так и беззнаковую форму (соотв. signed и unsigned). Short int обычно использует половину объема памяти int однако это не константное соотношение, например, в некоторых компиляторах int может занимать не 16 бит, а 32, а short int 16, а не 8. Тип long int обычно использует объем памяти в двое больший, чем int, то есть 4 байта, что опять-таки может изменяться в различных компиляторах. В signed-типах один бит всегда занимается хранением знака числа, в unsigned все биты занимаются исключительно хранением значения числа при этом unsigned-числа всегда считаются целыми.
Read the rest of this entry »

Tags: , , ,