Po prostu w C i warianty (w przeciwieństwie do java wuss z jego maszyną wirtualną) rozmiar pierwotnych typów na różnych celach może się znacznie różnić, a tak naprawdę nie ma gwarancji, chyba że używasz typów o stałej szerokości zdefiniowanych w stdint.h
, a nawet wtedy Twoja implementacja musi je wspierać.Czy sizeof zwraca liczbę bajtów lub liczbę oktetów typu w C?
W każdym razie hipotetycznie (ponieważ na większości współczesnych maszyn bajt jest oktetem, dla celów sieciowych zakładam (ASCII)) czy sizeof zwraca rozmiar typu danych w bajtach lub w oktetach?
Bajtów, ale jeden bajt (reprezentowany jako "char") ma bity "CHAR_BITS". Jeśli chcesz liczbę oktetów w 'T', do' sizeof (T) * CHAR_BITS/8'. Na większości platform 'CHAR_BITS' ma wartość' 8'. – GManNickG
@GManNickG 'CHAR_BIT' (nie ma S) :) – Praetorian
float octetPercent = sizeof (T) * CHAR_BIT /8,0; – awiebe