Perguntas com a marcação «sizeof»

sizeof refere-se ao operador C / C ++ padrão para retornar o tamanho em bytes de uma expressão ou tipo de dados.

505
Por que sizeof (x ++) não incrementa x?

Aqui está o código compilado nas janelas dev c ++: #include <stdio.h> int main() { int x = 5; printf("%d and ", sizeof(x++)); // note 1 printf("%d\n", x); // note 2 return 0; } Espero xser 6 depois de executar a nota 1 . No entanto, a saída é: 4 and 5 Alguém pode explicar por xque...

129
Por que sizeof (my_arr) [0] compila e tamanho igual (my_arr [0])?

Por que esse código é compilado? _Static uint32_t my_arr[2]; _Static_assert(sizeof(my_arr) == 8, ""); _Static_assert(sizeof(my_arr[0]) == 4, ""); _Static_assert(sizeof(my_arr)[0] == 4, ""); As duas primeiras afirmações estão obviamente corretas, mas eu esperava que a última linha falhasse, pois...

109
sizeof único membro da estrutura em C

Estou tentando declarar uma estrutura que depende de outra estrutura. Eu quero usar sizeofpara ser seguro / pedante. typedef struct _parent { float calc ; char text[255] ; int used ; } parent_t ; Agora quero declarar uma estrutura child_t que tem o mesmo tamanho que parent_t.text. Como posso...

103
Por que os literais de caracteres C são ints em vez de chars?

Em C ++ sizeof('a') == sizeof(char) == 1,. Isso faz sentido intuitivo, uma vez que 'a'é um caractere literal e sizeof(char) == 1conforme definido pelo padrão. No entanto, em C sizeof('a') == sizeof(int),. Ou seja, parece que os literais de caracteres C são, na verdade, inteiros. Alguem sabe por...

89
Por que um lambda tem o tamanho de 1 byte?

Estou trabalhando com a memória de alguns lambdas em C ++, mas estou um pouco confuso com o tamanho deles. Aqui está meu código de teste: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout...