sizeof () для плавающей константы в C
В языке 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, если вы сочтете это полезным. Также, пожалуйста, оставьте нам комментарий для дальнейших разъяснений или информации. Мы будем рады помочь и поучиться