0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Свод правил по работе с целыми числами в C/C

Свод правил по работе с целыми числами в C/C++

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

Всякий раз, когда я читаю или пишу код на C/C++, мне приходится вспоминать и применять эти правила в тех или иных ситуациях, например при выборе подходящего типа для локальной переменной/элемента массива/поля структуры, при преобразовании типов, а также в любых арифметических операциях или сравнениях. Обратите внимание, что типы чисел с плавающей запятой мы затрагивать не будем, так как это большей частью относится к анализу и обработке ошибок аппроксимации, вызванных округлением. В противоположность этому, математика целых чисел лежит в основе как программирования, так и компьютерной науки в целом, и в теории вычисления здесь всегда точны (не считая проблем реализации вроде переполнения).

Статья в тему:  Файл thumbs db. Файл Thumbs db что это и можно ли его удалить

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

Тип char

Символьный тип (char) является самым экономным типом данных в языке С поскольку использует всего один байт (8 бит) в памяти (микроконтроллера). Может быть знаковым (обозначается как «signed char«) и беззнаковым («unsigned char«). Соответственно, в переменной char знакового типа можно хранить значения в диапазоне от -128 до +127, а в переменной беззнакового типа — от 0 до 255.

Фактически, ключевые слова (модификаторы) signed и unsigned в начале объявления типа char интерпретируется как нулевой бит объявляемой переменной. Если unsigned, то все 8 бит интерпретируются как число, поэтому максимальное значение переменной в этом случае составляет 2^8-1=255. Если тип signed, то в этом случае нулевой бит отводится под хранение знака числа (+ (не отображается) или -), соответственно под хранение значения переменной остается всего 7 бит, что соответствует максимальному хранимому значению 127 (128).

Тип int

Переменная целого типа int может быть short (короткой) или long (длинной). При этом модификаторы short и long ставятся после ключевых слов signed или unsigned, поэтому получаем такие типы данных как signed short int, unsigned short int, signed long int, unsigned long int.

Если используется модификатор short, то под хранение переменной целого типа с таким модификатором отводится 2 байта (16 бит). Соответственно, для unsigned short int получаем диапазон хранимых значений от 0 до 65535, а для signed short int — от -32768 до +32767.

Статья в тему:  Планшетный компьютер самсунг галакси таб 3 7.0

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

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

В языке С существуют еще переменные типа long long int, для хранения которых выделяется 8 байт памяти (64 бита), но вряд ли когда-нибудь в программах для микроконтроллеров у вас возникнет необходимость в использовании столь больших чисел.

Таблица со всеми возможными целыми типами языка С и их параметрами приведена на следующем рисунке.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector