Se è importante, probabilmente stai facendo qualcosa di non sicuro e non portatile.
Sì, la chiamata memset
imposterà tutti i bit di riempimento (o byte) su 0 - ma non è garantito nella lingua che l'impostazione di un oggetto float
su tutti i bit zero lo imposterà su 0.0. Lo stesso vale per i puntatori: non è garantito che all-bit-zero sia un puntatore nullo. (In entrambi i casi, è vero per la maggior parte delle implementazioni.)
Lo standard ISO C90 o C99 originale non garantiva nemmeno che all-bit-zero fosse una rappresentazione valida di 0 per i tipi interi; una delle correzioni tecniche post-C99 ha aggiunto una tale garanzia (solo per i tipi interi).
Per la portabilità, se si desidera che qualcosa sia zero, impostarlo in modo esplicito. È anche possibile sfruttare l'inizializzazione del valore zero per gli oggetti statici e per i membri omessi negli inizializzatori.
Un nitpick terminologico: i "padding bit" fanno parte della rappresentazione dei tipi interi (e di solito non ce ne sono). Il riempimento tra i membri della struttura è il riempimento byte.
fonte
2011-12-18 05:31:37
Puoi mostrarci un esempio di codice? – Mysticial
codice di esempio aggiunto –
Non capisco cosa possa far dubitare di questo. –