Что означает дополнительный 0 перед значением int?

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

#include <iostream>
#include <cstdio>

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

И выходной был 65, и я понятия не имею, откуда 65? Любая идея?

2 ответа

Решение

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

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

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

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
Другие вопросы по тегам