Что означает дополнительный 0 перед значением int? - PullRequest
5 голосов
/ 18 января 2011

Вдохновленный запутанным фрагментом кода, у меня есть небольшой вопрос, касающийся назначения значения целому числу:

#include <iostream>
#include <cstdio>

int main() {
    int i = 0101;
    std::cout << i << "\n";
}

И результат был 65, и я понятия не имею, откуда 65?Есть идеи?

Ответы [ 2 ]

11 голосов
/ 18 января 2011

Указывает восьмеричное (основание-8) число: 0101 == 1 * (8 * 8) + 1 == 65.

0 голосов
/ 18 января 2011

Ламберт уже объяснил это. Итак, позвольте мне рассказать вам, что еще вы можете сделать.

Вы можете написать шестнадцатеричное целое число:

int main() {
    int i = 0x101; //0x specifies this (i.e 101) is hexadecimal integer
    std::cout << i << "\n"; //prints 257 (1 * 16 * 16 + 1)
}

Выход:

257
...