Articles of sizeof

Tamaño de cadena literal

El siguiente código #include using namespace std; int main() { const char* const foo = “f”; const char bar[] = “b”; cout << "sizeof(string literal) = " << sizeof( "f" ) << endl; cout << "sizeof(const char* const) = " << sizeof( foo ) << endl; cout << "sizeof(const char[]) = " << sizeof( bar […]

Operador sizeof () en if-statement

#include main() { if (sizeof(int) > -1) printf(“True”); else printf(“False”); } Imprime False . ¿Por qué sizeof () no devuelve un valor en if ?

¿Cómo funciona esta plantilla de “tamaño de matriz”?

Posibles duplicados: ¿Alguien puede explicar este código de plantilla que me da el tamaño de una matriz? Argumentos mágicos en plantillas de funciones … ¿Alguien puede explicar cómo funciona este código? Sé que el objective de este código es obtener la longitud de una matriz, pero no sé cómo funciona este código: template int GetArrLength(T(&)[size]){return […]

¿Por qué sizeof se considera un operador?

¿Por qué sizeof considera un operador y no una función? ¿Qué propiedad es necesaria para calificar como operador?

Usar sizeof con una matriz dinámicamente asignada

gcc 4.4.1 c89 Tengo el siguiente fragmento de código: #include #include char *buffer = malloc(10240); /* Check for memory error */ if(!buffer) { fprintf(stderr, “Memory error\n”); return 1; } printf(“sizeof(buffer) [ %d ]\n”, sizeof(buffer)); Sin embargo, el tamaño de (búfer) siempre imprime 4. Sé que un char * tiene solo 4 bytes. Sin embargo, he […]

¿Por qué ocurre esto con el operador sizeof cuando se compara con un número negativo?

¿Qué está pasando realmente aquí? La salida ahora es “False”: #include int main() { if (sizeof(int) > any_negative_integer) printf(“True”); else printf(“False”); return 0; } Si lo cambio a: if (sizeof(int) < any_negative_integer) la salida es “Verdadero”. Actualización: ya se ha hecho la misma pregunta , no pude encontrarla antes de preguntar.

¿Está definido sizeof (bool)?

No puedo encontrar una respuesta en la documentación estándar. ¿ sizeof(bool) siempre es de 1 byte, o está definida su implementación?

¿Qué significa el ‘nombre de la matriz’ en el caso de la matriz de punteros de char?

En mi código: char *str[] = {“forgs”, “do”, “not”, “die”}; printf(“%d %d”, sizeof(str), sizeof(str[0])); Obtengo la salida como 12 2 , así que mis dudas son: ¿Por qué hay una diferencia? Tanto str como str[0] son punteros de char, ¿verdad?

¿El tamaño de (algún puntero) siempre es igual a cuatro?

Por ejemplo: sizeof(char*) devuelve 4. Al igual que int* , long long* , todo lo que he intentado. ¿Hay alguna excepción a esto?

¿Hay plataformas donde los punteros a diferentes tipos tengan diferentes tamaños?

El estándar C permite punteros a diferentes tipos para tener diferentes tamaños, por ejemplo, sizeof(char*) != sizeof(int*) está permitido. Sin embargo, sí requiere que si un puntero se convierte en un void* y luego se vuelve a convertir a su tipo original, se debe comparar como igual a su valor original. Por lo tanto, se […]