Tại sao printf("%i", 056) ra 46?

Cho em hỏi vì sao khi
printf("%i", 056);
lại cho ra màn hình số 46 ạ.
Em cám ơn.

Mình có đọc được từ một trang nào đó nói rằng, nếu printf mà truyền vào một số có số 0 ở đẩu thì nó sẽ cho rằng số đó thuộc hệ bát phân chuyển thành thập phân đó.
Như số bạn truyền vào là 056 thì nó sẽ in ra 0*8^2 + 5*8^1 + 6*8^0 = 46
Mình giải thích có thể hơi khó hiều nên bạn có thể đọc ở

7 Likes

46 đúng rồi :slight_smile: còn %i chỉ có ý nghĩa với scanf thôi, của printf thì giống %d.

3 Likes

Cám ơn bạn nha. Mình hiểu rồi.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?