Целый тип данных
Для определения данных целого типа используются различные ключевые слова, которые определяют диапазон значений и размер области памяти, выделяемой под переменные (табл. 6).
Таблица 6
bit | 1 | от 0 до 1 | |
char | 8 | 1 | от -128 до 127 |
unsigned shar | 8 | 1 | oт 0 до 255 |
int, short | 16 | 2 | от -32768 до 32767 |
long | 32 | 4 | от -2 147 483 648 до 2 147 483 647 |
unsigned int, unsigned short | 16 | 2 | от 0 до 65535 |
unsigned long | 32 | 4 | от 0 до 4 294 967 295 |
sbit | 1 | 0 или 1 | |
sfr | 8 | 1 | oт 0 до 255 |
sfr16 | 16 | 2 | от 0 до 65535 |
Отметим, что ключевые слова signed и unsigned необязательны. Они указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый. В случае отсутствия ключевого слова unsigned целая переменная считается знаковой. В том случае, если спецификатор типа состоит из ключевого типа signed или unsigned и далее следует идентификатор переменной, то она будет рассматриваться как переменная типа int. Например:
unsigned int n; //Беззнаковое шестнадцатиразрядное число n unsigned int b; int c; (подразумевается signed int c ); unsigned d; (подразумевается unsigned int d ); signed f; (подразумевается signed int f ).Отметим, что модификатор типа char используется для представления одиночного символа или для объявления строковых литералов. Значением объекта типа char является код (размером 1 байт), соответствующий представляемому символу.
Отметим также, что восьмеричные и шестнадцатеричные константы также могут иметь модификатор unsigned. Это достигается указанием префикса u или U после константы, константа без этого префикса считается знаковой.
Например:
0xA8C (int signed ); 01786l (long signed ); 0xF7u (int unsigned );