массив int относительно двоичных цифр - PullRequest
0 голосов
/ 27 июня 2018

Мне интересно, почему результаты оказываются равными 100, 8, 1 на выходе. 010 даже не имеет смысла, что это не 2 в двоичных цифрах. Я что-то упустил?

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
    int code[3];
    code[0] = 100;
    code[1] = 010;
    code[2] = 001;
    printf("%d\n", code[0]);
    printf("%d\n", code[1]);
    printf("%d\n", code[2]);
}

1 Ответ

0 голосов
/ 27 июня 2018

100, 010 и 001 не являются двоичными литералами. 100 - десятичный литерал; 010 и 001 - восьмеричные (основание 8) литералы. Если вы используете gcc, есть расширение для поддержки двоичных литералов с использованием префикса 0b, как в

code[0] = 0b100; // evaluates to 4
...