Вот несколько мыслей. Я изучаю, что могут быть ошибки и даже недостающие некоторые основы.
Число бит в базовом типе данных
sizeof
Оператор возвращает количество байтов.number of bits in byte
не является постоянной величиной (исправьте меня, но это число бит имеет знак).- Я хочу знать, сколько бит занимает переменная, и sizeof не скажет мне, что без предположений о количестве бит в char.
Так что я пришел с этим куском (возможно ненужными) Код:
#include <stdio.h>
#include <math.h>
#include <limits.h>
int main(void)
{
double bits;
bits=sizeof(int)*log10(UCHAR_MAX+1)/log10(2);
printf("Bits = %lf\n", bits);
return 0;
}
Есть ли проще (стандартный) способ проверить, сколько bits
данный тип занимает?
CHAR_BIT * sizeof(type)
будет выполнять эту работу, но есть ли стандартный one argument
макрос/функция, которая делает это для меня?
Кто-то с лучшим математическим фоном может проверить, будет ли мой код всегда давать правильные ответы.
Возможный дубликат [Является ли символ гарантированностью ровно 8 бит в C?] (Http://stackoverflow.com/questions/ 881894/is-char-гарантировано-быть-точно-8-бит-long-in-c) – drahnr
@ drahnr это не так, это совершенно другой вопрос. Я знаю, как char/byte могут иметь разный размер. – zubergu