sizeof () для плавающей константы в C

Опубликовано: 5 Января, 2022

В языке C у нас есть три типа данных с плавающей запятой: float , double и long double . И точный размер каждого из этих 3 типов зависит от реализации / платформы компилятора C. Следующую программу можно использовать для определения размера каждого типа плавающих данных на вашем компьютере.

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

Но как насчет размера константы с плавающей запятой (например, 31,4 или 2,718)? Например, если у нас есть макрос PI, определенный следующим образом, каким будет sizeof (3.14).

#define PI 3.14

Теперь, если мы сделаем sizeof (PI) , каков будет его размер? Равно sizeof (float) ? Или это также зависит от реализации компилятора. Что ж, для плавающих констант стандарт C (C11, т.е. ISO / IEC 9899: 2011) дал рекомендации. Согласно пункту 6.4.4.2 C11, « незафиксированная плавающая константа имеет тип double. Если к нему добавляется буква f или F, он имеет тип float. Если оно дополнено буквой l или L, оно имеет тип long double. «

Это означает, что тип плавающей константы такой же, как и тип данных double. Таким образом, если размер double на машине равен 8 байтам, размер плавающей константы будет 8 байтов. Это можно узнать с помощью приведенной ниже программы.

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

В соответствии с вышеупомянутым стандартным предложением C, плавающая константа может быть преобразована в тип с плавающей запятой с помощью f или F. Точно так же плавающая константа может быть преобразована в long double с помощью l или L. угадывая вывод следующего:

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

Пожалуйста, сделайте Like / Tweet / G + 1, если вы сочтете это полезным. Также, пожалуйста, оставьте нам комментарий для дальнейших разъяснений или информации. Мы будем рады помочь и поучиться

Хотите учиться на лучших видео и практических задачах, ознакомьтесь с Базовым курсом C для базового и продвинутого C.



C