Free Web Site - Free Web Space and Site Hosting - Web Hosting - Internet Store and Ecommerce Solution Provider - High Speed Internet
Search the Web

How C Interprets Integer Constants with Leading Zeroes

VC++ (MFC) Source Codes


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.