|
|||||||
|
|
|
|||||
|
|
|||||||
SYMPTOMS
Two similar assignment statements produce very different results when the application prints values assigned. For example:
a = 20;
printf("%d", a); /* this prints "20" */
a = 020;
printf("%d", a); /* but this prints "16" */
CAUSE
Any number with a leading "0" (zero) is interpreted to be an octal number (base 8).
RESOLUTION
Remove the leading zero from the decimal number.
MORE INFORMATION
All character constants of the form "\<o>", "\<o><o>", "\<o><o><o>", (where <o> is a digit) and their string equivalents are specified in octal as well. For example, \33 and \033 each specify the ESC character (decimal 27, hexadecimal 1B). To specify a character constant in hexadecimal, use "\x<h><h>", where <h> is a hexadecimal digit. C does not provide a method to specify a decimal number in a character constant; you can use a decimal integer constant instead (for example, ch = 27).
Copyright (c) 1999 - 2001, robert han, all rigths are reserved.