errore per dichiarazione numero in variabile INT

Ciao,
perchè se dichiaro int in questo modo va bene:

int ora1_on = 0700;

mentre se la dichiaro così no?:

int ora1_off = 0900;

Il numero 900 non da errori di compilazione solo se non ha lo zero davanti, mentre il 0700, viene compilato con lo zero...

L'errore è questo:
invalid digit "9" in octal constant

Va bene comunque se dichiarata senza zero?
Grazie

Lo 0 davanti indica un numero espresso in OTTALE (cifre da 0 a 7), così come il 0x indica un numero espresso in ESADECIMALE (cifre da 0 a F) mentre, se non si mette nulla, si sottindende DECIMALE (cifre da 0 a 9)... quindi ... ovviamente 0900 in ottale NON esiste.

Guglielmo

Ciao,
ho capito, ma quindi non dovendo mettere nulla davanti per scrivere decimale, è giusto scrivere 900, e anche il 0700 quindi andrebbe scritto come 700? Ai fini della programmazione cambia qualcosa? Essendo un orario, tornava comodo scrivere il numero con lo zero davanti, ma basta saperlo :slight_smile:
Grazie grazie

NO, non puoi mettere lo 0 davanti … come ti ho detto esso serve ad indicare che quello NON è un numero decimale, ma un ottale. Per gli orari risolvi con un banale "IF (numero < 10) " … se è vero stampi prima uno ‘0’ così i numeri da 0 a 9 hanno uno ‘0’ in più davanti, mentri quelli dal 10 in su no :slight_smile:

Guglielmo

P.S.: 0700 (che è numero ottale) equivale a scrivere, in binario 111 000 000 ed in decimale, 448 :smiley: :smiley: :smiley:

Grazie, ho capito :wink:

Ciao, Guglielmo
La notazione ottale con lo 0 davanti è del C o solo dell'ambiente di Arduino?

Standard 'C' ... 0 (zero) per indicare ottale, '0x' per indicare esadecimale. :slight_smile:

Guglielmo

Grazie :slight_smile: