Go Down

Topic: Strange behavior with int and Serial.print (Read 590 times) previous topic - next topic

Aladdin

Jun 14, 2013, 11:00 pm Last 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]


23
19
19


groundfungus

#1
Jun 14, 2013, 11:08 pm Last 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

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?

Fexduino

You can use literal formatting for this. E.g.


  • 22L is of type LONG

  • B001 is of type BYTE

  • 2f is of type FLOAT



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

Go Up