sizeof
- стандартный оператор C.
sizeof
возвращает размер (в байтах) своего операнда в типе size_t
, цитата из ISO / IEC 9899 : 2018 (С18), 6.5.3.4/5. Фразы, окруженные --
, являются моим дополнением для пояснения контекста:
Значение результата обоих операторов - (sizeof и _Alignof) - определяется реализацией, а его тип ( целочисленный тип без знака) size_t
, определенный в <stddef.h>
(и других заголовках).
Неявно, если я хочу, чтобы моя программа соответствовала стандарту и использовал sizeof
, мне нужно включить один из заголовочных файлов, в которых определен size_t
, потому что значение, которое он дает, имеет тип size_t
, и я хочу сохранить значение в соответствующем объекте.
Конечно, в любой программе, которая не будет игрушечной, мне понадобится хотя бы один из этих заголовков, независимо от того, но в простой программе мне нужно явно включать эти заголовки, хотя я этого не делаю. нужны они иначе.
Могу ли я использовать неподписанный объект int для хранения выходных данных size_t
value sizeof
без явного приведения?
Как, например,
char a[19];
unsigned int b = sizeof(a);
Я скомпилировал это с опцией gcc
и -Wall
и -Werror
, но на это не на что было жаловаться.
Но соответствует ли это стандарту?