Типы данных в языке Си
Все данные делятся на типы, типы подразумевают под собой определенную структуру данных и их вид.
Для успешного написания программ для микроконтроллеров на языке Си необходимо знать эти типы, и знать как их применять в конкретном случаи. Например чтобы не использовать лишнюю оперативную память микроконтроллера, которой как обычно не так много (порядок величин сотни байт) для переменной которая будет меняться к примеру в диапазоне от 0 до 120 нету смысла выбирать тип данных long, который хоть и содержит данных диапазон, но имеет размер в 4 байта, а это очень много, если учесть что например тип данных char размером всего 1 байт.
Тип | Размер в байтах (битах) | Интервал изменения |
char | 1 (8) | от -128 до 127 |
unsigned char | 1 (8) | от 0 до 255 |
signed char | 1 (8) | от -128 до 127 |
int | 2 (16) | от -32768 до 32767 |
unsigned int | 2 (16) | от 0 до 65535 |
signed int | 2 (16) | от -32768 до 32767 |
short int | 2 (16) | от -32768 до 32767 |
unsigned short int | 2 (16) | от 0 до 65535 |
signed short int | 2 (16) | от -32768 до 32767 |
long int | 4 (32) | от -2147483648 до 2147483647 |
unsigned long int | 4 (32) | от 0 до 4294967295 |
signed long int | 4 (32) | от -2147483648 до 2147483647 |
float | 4 (32) | от 3.4Е-38 до 3.4Е+38 |
double | 8 (64) | от 1.7Е-308 до 1.7Е+308 |
long double | 10 (80) | от 3.4Е-4932 до 3.4Е+4932 |
»
Забыли
еще забыли:
void - пустой тип, т.к. когда нам нужно, чтобы функция ничего не возвращала
double, float - вещественный тип, очень аккуратно с использованием. Операция деления двух вещественных чисел скушала половину памяти микроконтроллера mega8
поэтому лучше и не знать об
поэтому лучше и не знать об их существовании))
а в чем отличия signed от unsigned при декларировании?
и еще, всегда волновал вопрос, почему мы в main всегда делали return 1 - почему не 0, и вообще зачем, если main(void)?