В c# например такие типы как int, float и тд это структуры, string и тд это классы. С это процедурный язык, и как я понял классов и структур там нет, что тогда представляют из себя примитивные типы данных "под капотом"?
Просто байты памяти, хранящие непосредственное значение. Без таблиц виртуальных функций, указателей на методы и прочего.
> С это процедурный язык, и как я понял ... структур там нет.
Структуры есть, именно момент, когда их (и типы данных) добавили в компилятор B авторы языка и выделяют, как возникновение отдельного языка Си.
А насколько глубоко ты копаешь? Потому что любые данные в конечном итоге, как бы они там красиво ни назывались - это просто ячейки в памяти. Просто в С это не просто ячейки в памяти, а очень просто ячейки в памяти - там хранится только какое-то значение, безо всяких дескрипторов, добавочных указателей, метаданных и прочих наворотов.
>и как я понял классов и структур там нет,
Структуры там есть - чистые и незамутненные. Тоже исключительно данные, идущие подряд. В других языках даже для совместимости приходится иногда использовать специальные конструкции, например С-подобная структура в паскале - это не просто record, а packed record.
>В c# например такие типы как int, float и тд это структуры, string и тд это классы.
И это не совсем так. Когда ты описываешь какой-нибудь примитивный тип, компилятор не выделяет под него место для методов этой самой структуры. Иначе бы программы тупо не помещались ни в какую разумную память. А под методы память выделяется, во-первых, только один раз, а во-вторых - только под те из них, которые использованы в программе. Такие вот дела.
В C, в отличие от C#, где int, float и другие являются структурами, а string — классом, примитивные типы данных представляют собой лишь базовые, неделимые единицы информации, определяемые стандартом языка и непосредственно поддерживаемые процессором, но ты не прав, говоря, что в С нет структур: они там есть, просто примитивные типы не являются ни структурами, ни классами, а служат лишь для описания размера и способа интерпретации области памяти.