2013-02-22 9 views
6

Questo potrebbe essere sembrare un/domanda banale stupida in un primo momento, ma quando faccio questo:Qual è la differenza tra 15 e 015?

char f_gear = 15; 

ho l'uscita normale

"☼" 

ma quando ho pad con gli zeri quando ho dichiararlo:

char f_gear = 015; 

ottengo uscita strano rende il testo sguardo confuso (in una riga) e azzera la linea precedente. Quando provo a vedere il singolo carattere, ottengo il seguente:

"  ◘◘@╧S☻ " 

Che cosa è essenzialmente diverso? Non è 15 == 015?

== EDIT == Stack Overflow ha modificato il testo quando ho inserito la domanda. L'output che ho davvero visto era di pochi caratteri vuoti.

+0

Perdonami se è un duplicato, non ho mai saputo che i numeri che iniziano con 0 fossero ottali. –

+0

Nessun problema. Potresti trovare interessante anche questo: http://stackoverflow.com/questions/6895522/is-0-a-decimal-literal-or-ananocial-literal – jogojapan

+0

http://stackoverflow.com/questions/44569/ octal-number-literals-when-why-ever –

risposta

11

No, 015 si riferisce al numero ottale. Quindi, 015 in ottale è uguale a 13 in decimale.

Quindi,

char f_gear = 015; 

è equivalente a

3

Tutti i numeri letterali che iniziano con 0 sono in ottale.

1

Esempio, se scriviamo il numero "15". Il compilatore lo riconoscerà come: 0000 1111 in binario.

Se scriviamo il numero 015 il compilatore lo riconoscerà come ottale e lo vedremo come 0000 1101 in binario.

1

char f_gear = 015 è considerato ottale, quindi è equivalente a char f_gear = 13. ASCII 13 è per il ritorno a capo, che è la causa del risultato. Snippet di seguito mostra i valori enter image description here