Go Down

### Topic: Strange behavior with int and Serial.print (Read 1 time)previous topic - next topic

##### Jun 14, 2013, 11:00 pmLast Edit: Jun 14, 2013, 11:02 pm by Aladdin Reason: 1
Hi! Got a short program write ints to the serial port and I get a very strange behavior. My guess is that arduino think test2 and test3 is in OCT for because the 0 in the start. Can I specify that it is DEC like 0x in HEX or 0b BIN? And is there any good way to convert a DEC to OCT in arduino? (Not in the print function)

Code: [Select]
`void setup() {                  Serial.begin(57600);  int test1 = 23;  int test2 = 023;  int test3 = 0023;    Serial.println(test1);  Serial.println(test2);  Serial.println(test3);}`
Output:
Code: [Select]
`231919`

#### groundFungus

#1
##### Jun 14, 2013, 11:08 pmLast Edit: Jun 14, 2013, 11:10 pm by groundfungus Reason: 1
the leading zero (0) is for octal (like 0x for hex).  23 octal is 19 decimal.  (8*2)+3

#### PaulS

#2
##### Jun 15, 2013, 02:38 am
Quote
Can I specify that it is DEC like 0x in HEX or 0b BIN?

No. Numbers with leading 0s are assumed to be base 10. What is the point of having the leading 0? If it didn't change the base, it would not change the value stored. So, that is the point?
The art of getting good answers lies in asking good questions.

#### Fexduino

#3
##### Jun 15, 2013, 07:03 pm
You can use literal formatting for this. E.g.

• 22L is of type LONG

• B001 is of type BYTE

• 2f is of type FLOAT

http://arduino.cc/en/Reference/IntegerConstants and Google.. Just search for literal formatting

Go Up