В Си так же как и в плюсах размер целочисленных типов не фиксирован, есть только ограничения, что
sizeof(int) >= sizeof(short) >= sizeof(char) и т.п.
Если для большинства типов, все таки размеры более-менее устоявшиеся для широкоиспользуемых архитектур и компиляторов, то в случае с
long int
все сложнее и действительно зависит от ABI. Т.е. даже на одной платформе но на разных компиляторах размер может быть разным. Например, сравните размеры типов в микрософтовском компиляторе и в mingw64 под 64 битной виндой на одном и том же компе.
Кстати, не забудьте, что есть еще
long long int
.
Чтоб не зависеть от подобных вещей рекомендую использовать типы с фиксированной длиной int32/int64 и т.п., которые объявлены в stdint.h
Размеры типов с плавающей точкой float/double как раз стандартизованы, но не стандартами Си/С++, а стандартом IEEE754.
Размер указателей - зависит от архитектуры. На 32 битных процессорах обычно это 4 байта, на 64 битных процессорах - 8.