C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
| template <typename T> bool SchrijfNummerNaarFile( FILE* fp, T nummer ) { long len( sizeof(T) ); if ( fwrite( &len, sizeof(long), 1, fp ) != 1 ) return false; if ( fwrite( &nummer, len, 1, fp ) != 1 ) return false; return true; } |
Zoals je hier kan zien schrijf ik eerst de grootte van het getal weg, en daarna het getal zelf. Maar op 1 of andere manier schijnt een double maar 4 bytes te zijn, terwijl als ik daarna in de file zelf ga kijken, dat ik zie dat er 4 bytes header zijn geschreven. En 8 bytes data??? Terwijl ik door mijn 2e statement toch maar normaal de eerste 4 bytes van nummer wegschrijf?
Voor int, long enzo maakt dat niet echt veel uit, maar voor doubles wel. Dus dat is iets wat ik niet goed snap. Waarom doet ie dat zo?
Ik heb in debugmode gegaan en die len IS 4 bij een double! Is de sizeof() functie dan verkeerd?