Why int j = 012 giving output 10?

前端 未结 4 1711
抹茶落季
抹茶落季 2020-11-30 11:15

In my actual project It happened accidentally here is my modified small program.

I can\'t figure out why it is giving output 10?

pub         


        
4条回答
  •  南笙
    南笙 (楼主)
    2020-11-30 12:11

    Than I change 012 to 0123 and now it is giving output 83?

    Because, it's taken as octal base (8), since that numeral have 0 in leading. So, it's corresponding decimal value is 10.

    012 :

    (2 * 8 ^ 0) + (1 * 8 ^ 1) = 10
    

    0123 :

    (3 * 8 ^ 0) + (2 * 8 ^ 1) + (1 * 8 ^ 2) = 83
    

提交回复
热议问题