Stephen Fox
Stephen Fox

Reputation: 14470

PHP: Why is the answer to this addition 20 and not 22?

Why is the output to this 20, and not 22? Seeing as you're adding 10 + 0xA(which is 10 in HEX) + 2.

$a = 010;
$b = 0xA;
$c = 2;

print $a + $b + $c;

Output: 20.

Upvotes: 4

Views: 498

Answers (3)

Marco Mura
Marco Mura

Reputation: 582

This will solve:

<?php
$a = 10;
$b = 0xA;
$c = 2;

print $a + $b + $c;
?>

The 0 leading for $a was putting is as an Octal value, not decimal one.

Upvotes: 1

Rizier123
Rizier123

Reputation: 59701

It's correct!

(Because the first number is octal so if you want it to be interpreted as a decimal you have to remove the first 0) Se:

$a = 010;  //Octal -> 8
$b = 0xA;  //Hex   -> 10
$c = 2;    //Dec   -> 2

print $a + $b + $c;  //20

Output:

20

Upvotes: 21

Quentin
Quentin

Reputation: 944147

See the manual for numbers:

To use octal notation, precede the number with a 0 (zero). To use hexadecimal notation precede the number with 0x. To use binary notation precede the number with 0b.

010 is an octal number (it starts with a 0 which isn't followed by a decimal point), which is 8 in decimal.

Upvotes: 3

Related Questions