Ho una domanda molto semplice che mi sconcerta per molto tempo. 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), ID di identificazione a 32 e 64 bit (inoltre non hanno una mappatura significativa per il segno). Praticamente non ho mai a che fare con qualsiasi parola vera che possa essere espressa come un numero negativo.
Io e i miei colleghi usiamo abitualmente tipi non firmati come uint32_t
e uint64_t
per queste questioni e, poiché accade così spesso, li usiamo anche per gli indici di array e altri usi interi comuni.
Allo stesso tempo, sto leggendo (ad esempio Google) varie guide alla programmazione che 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: l'uso di valori firmati nel nostro ambiente sarebbe molto scomodo, allo stesso tempo codifica delle guide per insistere nel fare esattamente questo.