Perché:Modulo operatore dà risultati diversi con zeri
int test() {
return 00101 % 10;
}
ritorno 5
, mentre:
int test() {
return 101 % 10;
}
rendimenti 1
? Non riesco a pensare a una spiegazione.
Perché:Modulo operatore dà risultati diversi con zeri
int test() {
return 00101 % 10;
}
ritorno 5
, mentre:
int test() {
return 101 % 10;
}
rendimenti 1
? Non riesco a pensare a una spiegazione.
letterali interi che iniziano con 0
come
00101
è in realtà una costante ottale.
00101
è un valore ottale che è 65
in decimale, quindi restituisce 5
.
00101 è in ottale che è pari a 65 in decimale, quindi è per questo che l'operatore modulo sarà sempre darci 5. Si può fare ottale a decimale converstion su questo link http://www.rapidtables.com/convert/number/octal-to-decimal.htm
Questa è la convenzione più confuso mai, è totalmente in contraddizione con il modo in cui gli umani guardano i numeri. –
Grazie mille! C'è un modo per aggirare questo? Sto ricevendo dei valori e non so quanti saranno gli zeri principali. –
@KosmasKatsoulotos Come hai ricevuto i valori? Non si incontra questo problema se non quello di confrontarsi con i letterali. –