Каков размер для оператора sizeof в c? - PullRequest
0 голосов
/ 04 февраля 2011

В последнее время я был на одном интервью по "SureSoft Technology" ...... В этом интервью они задают один вопрос, такой как "Каков размер для оператора sizeof в c?"

Если кто-нибудь знает ответ Поделитесь со мной?

Ответы [ 4 ]

4 голосов
/ 04 февраля 2011

Сам оператор sizeof не имеет размера. Его результат обычно * превращается в постоянное значение во время компиляции.

Что касается возвращаемого значения, то это будет размер в байтах аргумента. Тип результата size_t (определенный в <stdlib.h>) (§6.5.3.4.4)

* - с заметным исключением автоматических массивов динамического размера.

3 голосов
/ 04 февраля 2011

Вы найдете ответы здесь и здесь : результат sizeof имеет тип size_t и:

"Фактический тип size_t зависит от платформы; распространенной ошибкой является допущение, что size_t совпадает с unsigned int, что может привести к ошибкам программирования, например, при переходе с 32-разрядной архитектуры на 64-разрядную. В соответствии со стандартом ISO C 1999 года (C99) size_t представляет собой целочисленный тип без знака длиной не менее 16 бит. "

1 голос
/ 04 февраля 2011

Ответ прост - это размер в байтах данной структуры данных, который вы передаете sizeof.

Например:

sizeof(char) // one bytes
sizeof(int) // four bytes

Надеюсь, это поможет.

1 голос
/ 04 февраля 2011

Тип size_t, определенный в stddef.h.

...