Art3mis - 1 year ago 58

C++ Question

This is my first question, so forgive me if I get something wrong.

I am very new to programming, and I came across a problem I can't find a solution to online. When using

`scanf`

For example,

`0020`

`16`

`0030`

`24`

`0100`

`64`

It seems to work with powers of

`8`

`8`

`0009`

`0`

`9`

There might be a simple rule I'm not aware of, I'm sorry if the answer is obvious. Thanks in advance for anyone who answers!

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

There are different notations for the popular bases (base 8, 10 and 16).

Base 8: Also known as Octal. You define a number as base 8 when you put a 0 in front of the input number. So when you input `020`

, it is read as `16`

in decimal.

Base 10: Also known as Decimal. You just write a number you want to input without any leading `0`

s. So when you input `20`

, it is read as `20`

.

Base 16: Also known as Hexadecimal. You write it with an `0x`

in the front. So inputting `0x20`

, it will be stored as `32`

in decimal.

If you are reading the number using `scanf()`

with format specifier as `%d`

`%i`

, then it is reading an octal number and interpreting it as an integer.

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**