Типы данных в языке Си

Все данные делятся на типы, типы подразумевают под собой определенную структуру данных и их вид.

Для успешного написания программ для микроконтроллеров на языке Си необходимо знать эти типы, и знать как их применять в конкретном случаи. Например чтобы не использовать лишнюю оперативную память микроконтроллера, которой как обычно не так много (порядок величин сотни байт) для переменной которая будет меняться к примеру в диапазоне от 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)?