Semplicemente inserito in C e varianti (diversamente da wuss java con la sua macchina virtuale) la dimensione dei tipi primitivi su diversi target può variare notevolmente, e non c'è davvero alcuna garanzia a meno che non si utilizzino i tipi di larghezza fissa definiti in stdint.h
, e anche allora la tua implementazione deve supportarli.Does sizeof restituisce il numero di byte o il numero di ottetti di un tipo in C?
In ogni caso ipoteticamente (poiché sulla maggior parte delle macchine moderne un byte è un ottetto, per scopi di rete presumo (ASCII)) sizeof restituisce la dimensione di un tipo di dati in byte o in ottetti?
Byte, ma un singolo byte (rappresentato come 'char') ha bit' CHAR_BITS'. Se vuoi il numero di ottetti in un 'T', esegui' sizeof (T) * CHAR_BITS/8'. Sulla maggior parte delle piattaforme, 'CHAR_BITS' è' 8'. – GManNickG
@GManNickG 'CHAR_BIT' (non c'è S) :) – Praetorian
float octetPercent = sizeof (T) * CHAR_BIT /8.0; – awiebe