Microsoft KB Archive/35037

= INFO: How C Interprets Integer Constants with Leading Zeroes =

Article ID: 35037

Article Last Modified on 12/11/2003

-

APPLIES TO


 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition
 * Microsoft Visual C++ 1.51
 * Microsoft Visual C++ 1.52 Professional Edition
 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 2.1
 * Microsoft Visual C++ 4.0 Standard Edition
 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 6.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition
 * Microsoft Visual C++ 6.0 Professional Edition
 * Microsoft Visual C++ 6.0 Standard Edition

-



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(&quot;%d&quot;, a);  /* this prints &quot;20&quot; */ a = 020; printf(&quot;%d&quot;, a);  /* but this prints &quot;16&quot; */ Any number with a leading &quot;0&quot; (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 &quot;\&quot;, &quot;\&quot;, &quot;\&quot;, (where  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 &quot;\x&quot;, where  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).

Keywords: kbinfo kblangc KB35037

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.