Ho una domanda molto semplice che mi sconcerta a lungo. Ho a che fare con reti e database, quindi molti dati con cui ho a che fare sono contatori a 32 e 64 bit (senza segno), identificativi di identificazione a 32 e 64 bit (inoltre, non hanno una mappatura significativa per il segno). Praticamente non mi occupo mai di alcuna materia reale che possa essere espressa come numero negativo.
Io e i miei collaboratori usiamo di routine tipi non firmati come uint32_t
e uint64_t
per questi argomenti e poiché accade così spesso li usiamo anche per indici di array e altri usi di interi comuni.
Allo stesso tempo, varie guide di codifica che sto leggendo (ad es. Google) scoraggiano l'uso di tipi interi senza segno e, per quanto ne so, né Java né Scala hanno tipi interi senza segno.
Quindi non sono riuscito a capire quale sia la cosa giusta da fare: utilizzare i valori firmati nel nostro ambiente sarebbe molto scomodo, allo stesso tempo guide di codifica per insistere nel fare esattamente questo.