sizeof() para constante flotante en C

En lenguaje C, tenemos tres tipos de datos flotantes, es decir , float , double y long double . Y el tamaño exacto de cada uno de estos 3 tipos depende de la implementación/plataforma del compilador C. El siguiente programa se puede utilizar para averiguar el tamaño de cada tipo de datos flotantes en su máquina.

#include "stdio.h"
int main()
{
 printf("%d %d %d",sizeof(float), sizeof(double), sizeof(long double));
 return 0;
}

Pero, ¿qué pasa con el tamaño de una constante de punto flotante (por ejemplo, 31,4 o 2,718)? Por ejemplo, si tenemos la macro PI definida de la siguiente manera, ¿cuál sería el tamaño de (3.14).

#define IP 3.14

Ahora bien, si hacemos sizeof(PI) , ¿cuál será su tamaño? ¿Es igual a sizeof(float) ? ¿O también depende de la implementación del compilador? Bueno, para las constantes flotantes, el estándar C (C11, es decir, ISO/IEC 9899:2011) ha proporcionado una guía. Según C11 cláusula 6.4.4.2, “ Una constante flotante sin sufijo tiene tipo doble. Si tiene como sufijo la letra f o F, tiene tipo float. Si lleva como sufijo la letra l o L, tiene tipo long double.

Significa que el tipo de una constante flotante es el mismo que el tipo de datos doble . Entonces, si el tamaño de un doble en una máquina es de 8 bytes, el tamaño de la constante flotante sería de 8 bytes. Uno puede averiguar esto usando el siguiente programa

#include "stdio.h"
#define PI 3.14
int main()
{
 printf("%d",sizeof(PI));
 return 0;
}

De acuerdo con la cláusula estándar C mencionada anteriormente, una constante flotante se puede convertir a tipo flotante usando f o F. De manera similar, una constante flotante se puede convertir a long double usando l o L. Por lo tanto, no debería pensar mucho en adivinando el resultado de lo siguiente:

#include "stdio.h"
int main()
{
 printf("%d %d",sizeof(3.14F), sizeof(3.14L));
 return 0;
}

Haga clic en Me gusta/Tweet/G+1 si encuentra útil lo anterior. Además, déjenos un comentario para obtener más aclaraciones o información. Nos encantaría ayudar y aprender 🙂

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *