INFO: How C Interprets Integer Constants with Leading Zeroes (35037)
The information in this article applies to:
- Microsoft Visual C++ 1.0
- Microsoft Visual C++ 1.5
- Microsoft Visual C++ 1.51
- Microsoft Visual C++ 1.52
- Microsoft Visual C++ 2.0
- Microsoft Visual C++ 2.1
- Microsoft Visual C++ 4.0
- Microsoft Visual C++, 32-bit Enterprise Edition 5.0
- Microsoft Visual C++, 32-bit Enterprise Edition 6.0
- Microsoft Visual C++, 32-bit Professional Edition 5.0
- Microsoft Visual C++, 32-bit Professional Edition 6.0
- Microsoft Visual C++, 32-bit Learning Edition 6.0
This article was previously published under Q35037 SUMMARY
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" */
Any number with a leading "0" (zero) is interpreted to be an octal
number (base 8).
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).
Modification Type: | Major | Last Reviewed: | 12/11/2003 |
---|
Keywords: | kbinfo kbLangC KB35037 |
---|
|