Задать вопрос
  • Что именно происходит в Ардуино при попытке записи слишком большого числа?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Откуда диапазон значений, тоже понятно. Но что конкретно происходит при попытке выйти за этот диапазон?
    Почему при вычислении степеней двойки в какой-то момент выводится минимальное значение, -32768, а затем - одни нули?

    Точно понятно?

    2^0 == 0b0000000_00000001 == 1 (16 младших разрядов)
    ...
    2^14 == 0b01000000_00000000 == 16384 (16 младших разрядов)
    ...
    2^15 - 1 == 0b01111111_11111111 == 32767 (16 младших разрядов)
    2^15 == 0b100000_00000000 == -32768 (16 младших разрядов)
    2^15 + 1 == 0b100000_00000001 == -32767 (16 младших разрядов)
    ...
    2^16 - 1 == 0b11111111_11111111 == -1 (16 младших разрядов)
    2^16 == 0b1_00000000_00000000 == 0 (16 младших разрядов)
    2^16 + 1 == 0b1_00000000_00000001 == 1 (16 младших разрядов)

    Что происходит при других операциях со слишком большими числами?

    Неопределённое поведение, если тип значения знаковый. Компилятор может наоптимизировать что захочет.
    Если тип значения беззнаковый -- результат обрезается по ширине типа данных результата.
    Ответ написан
    Комментировать
  • Как подключить header без ошибки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему компилятор g++ пишет, что не определены конструкторы с деструкторами и метод?

    g++ main.cpp neuron.cpp layer.cpp -o test
    Ответ написан
    4 комментария
  • Как исправить undefined reference to существующей функции?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert

    g++ ... -I/usr/local/include/RHVoice ...
    main.cpp:(.text+0x17): undefined reference to `RHVoice_new_tts_engine'
    main.cpp:(.text+0x27): undefined reference to `RHVoice_get_voices'

    Судя по пути до каталога с заголовками нужно добавить что-то такое: -L/usr/local/lib -lRHVoice. Чтобы узнать точно, нужно посмотреть, куда установилась и как называется библиотека (*.a или *.so) RHVoice.
    Ответ написан
    1 комментарий
  • Один двумерный или два одномерных массива?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что выбрать?

    То, в чём потом не запутаешься. Потому что в массивах ты уже запутался.
    Я бы предложил один массив структур с полями для имени, фамилии и отчества.

    Что лучше выбрать с точки зрения использования памяти и производительности?

    Лучше выбрать то, в чём потом не запутаешься. Если будет тормозить -- прогнать через профилировщик и смотреть на результаты профилирования.
    Ответ написан
    Комментировать
  • Не находит std::threads. Что не так?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не находит std::threads. Что не так?

    Кто не находит? Какое сообщение об ошибке?
    Я вижу вот что:
    $ cat > thr.cpp
    #include <thread>
    using namespace std;
    void doIt(){
      //do nothing
    }
    int main(){
      thread t(doIt);
      t.detach();
      return 0;
    }
    $ g++ -std=c++11 thr.cpp -o thr
    /tmp/ccVyziLM.o: In function `std::thread::thread<void (&)()>(void (&)())':
    thr.cpp:(.text._ZNSt6threadC2IRFvvEJEEEOT_DpOT0_[_ZNSt6threadC5IRFvvEJEEEOT_DpOT0_]+0x20): undefined reference to `pthread_create'
    collect2: error: ld returned 1 exit status

    Лечится ключом -pthread:
    $ g++ -std=c++11 thr.cpp -pthread -o thr
    Ответ написан
    1 комментарий
  • Как убрать флаг g в поиске vim?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Для замены все вхождений используется флаг g

    Для замены всех вхождений в одной строке.

    % s/some/text/

    % как раз говорит применять ко всем строкам.
    Ответ написан
  • Почему лог journald в бинарном виде?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Это связано с тем, что раньше программы писали для людей, а люди читали вывод программ. А теперь программы пишут для других программ, а люди больше не нужны.
    Ответ написан
    1 комментарий
  • Как организовать динамическое использование for?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    #!/bin/bash
    arr=([1]=1 [2]=2 3 [5]=4 5);
    eval 'for i in {0..'${#arr[*]}'..2};do
     printf "[$i]:${arr[$i]}\n";
    done'

    Такой brace expansion работает только с литералами. Приведённое решение генерирует тело цикла с литералами и засовывает его в eval.
    Ответ написан
    Комментировать
  • Как победить detached HEAD state?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я (Петя ) пробовал так:
    1. Удалил свой проект локально усебя на компе.
    2. Клонировал проект Васи с гитхаба себе на комп.
    3. git checkout хэш_8_го_коммита_Васи

    Вот в этот момент случился detached HEAD.

    5. git remote set-url origin url_на_репозиторий_Пети.git

    Не нужно, т.к. шаг 2 уже это сделал.

    Как сделать?

    Зависит от того, как вы решите поступить с историей. Есть несколько вариантов:
    - выкинуть два ненужных коммита совсем и переписать историю начная с этого места. Для этого на шаге 3 нужно было сделать git reset --hard хэш_8_го_коммита_Васи, а при пуше в репозиторий пушить с ключом -f

    - откатить два ненужных коммита, оставив их в истории. Для этого на шаге 3 нужно было сделать
    git revert хэш_10_го_коммита; git revert хэш_9_го_коммита


    - родить новую ветку от 8-го коммита и разрабатывать дальше в ней. Для этого на шаге 3 нужно было сделать
    git checkout хэш_8_го_коммита_Васи -b имя_новой_ветки


    Ну и дальше в IDEA при попытке: VCS --> Commit... --> Commit and push... получаю сообщение "The Git repository C:\project2018wm is in the detached HEAD state"


    В вашем текущем состоянии я бы сделал следующее:
    git stash
    git checkout master # или имя ветки в которой были 8 хороших коммитов
    действия из выбранного варианта из перечисленных выше
    git stash pop
    Ответ написан
    Комментировать
  • Как пробросить несколько ответов в консоль для скрипта?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    cat <<EOF | java -jar setup.jar
    yes
    no
    maybe
    EOF
    Ответ написан
    1 комментарий
  • C - Как сделать отдельную функцию под ввод массива с клавиатуры и функцию под вывод?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    составить две функции, вызывающиеся в main - функцию ввод массива определенной длины n, и функцию вывод массива в консоль

    1) понять, что эти функции будут принимать и что возвращать
    2) перенести код ввода в первую функцию
    3) написать вторую функцию
    Ответ написан
    Комментировать
  • Почему приходит сообщение run-parts: /etc/cron.daily/mlocate exited with return code 1?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как победить ошибку?

    Снести mlocate к чёртовой матери, потому что им никто не пользуется. apt-get remove mlocate
    Ответ написан
    Комментировать
  • Linux NASM чтение и вывод содержимого файла?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    какая-то беда нету вывода никакого

    запусти свою программу под strace: strace -i -v test и увидишь, какие системные вызовы и с какими аргументами она делает с каких адресов.
    Ответ написан
    1 комментарий
  • Забивается буфер клавиатуры как быть?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    игра где обрабатываются нажатия только если они есть...
    из за задержки буффер клавиатуры успевает забиться

    Что мешает вставить код опроса и чтения клавиатуры внутрь цикла задержки?
    Ответ написан
    2 комментария
  • Неккоректно отработал SED?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    есть задача...

    sed -i 's/\(^dsn=\).*/\dsn=pgsql://hostaddr="${HOST}" dbname="${DBNAME}" user="${USER}" password='"${PASS}"' options='-c client_min_messages=NOTICE' application_name='fs'/'

    sed: -e expression #1, char 27: unknown option to `s'

    ты сам-то можешь понять, что тут должно было быть написано? не смущают вложенные одиночные кавычки и обилие знаков '/' ?
    Ответ написан
    Комментировать
  • Как количество элементов массива подставить в переменную bash?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    i=${{#my_array[@]} - не катит (

    Слишком много скобочек. Должно быть
    i=${#my_array[@]}
    Ответ написан
    Комментировать
  • Можно ли и создать экземпляр класса (с++) с проинициализированными полями?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    $ cat > test.cpp <<EOF
    class type_class {
            int field1;
            int field2;
    public:
            constexpr type_class (int f1, int f2): field1(f1), field2(f2) {
            }
    };
    extern const type_class var;
    const type_class var(12, 34);
    EOF
    $ g++ -S -O2 test.cpp
    $ cat test.s
            .file   "test.cpp"
            .globl  var
            .section        .rodata
            .align 8
            .type   var, @object
            .size   var, 8
    var:
            .long   12
            .long   34
            .ident  "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516"
            .section        .note.GNU-stack,"",@progbits

    Т.е. constexpr конструктор, в результате -- готовый инициализированный объект в секции .rodata, что и требовалось.
    Ответ написан
    1 комментарий
  • При x = x + 1 чему будет равно х?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    при x = x + 1 будет x равняться "2"

    x = x + 1 -- это не уравнение. Это запись следующей команды: "прибавить к текущему значению переменной x единицу и поместить результат в переменную x". Соответственно результат будет зависеть от значения переменной x перед этой командой.

    если я объявляю переменную через int x; и потом ничего в неё не кладу, то там хранится ноль на Си?

    Если вы определяете переменную как int x; вне всех функций, то в С и С++ там изначально хранится 0. Если вы делаете то же самое внутри функции, то начальное значение не определено. Технически там будет либо мусор находящийся в стеке или в регистре процессора ассоциированном с данной переменной, либо какое-нибудь отладочное значение записанное туда компилятором специально для отлова обращений к неинициализированным переменным.
    Ответ написан
    Комментировать
  • C++ как создавать обьэкты класса через указатель?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    obj->ShowID(); // Думал напишу obj[Тут номер обьэкта] и будет работать но нет...

    obj[N].ShowID();
    Если бы ты прочитал элементарную книжку по C или C++ таких вопросов бы не возникло. Потому что там написано, что запись a[b] эквивалентна записи *(a + b).

    Test *obj2= obj + sizeof (Test);
    objN= obj + (sizeof (Test) * N) ;

    Александр не нужно умножать N на sizeof (Test), компилятор сделает это сам: obj2 = obj + 1; objN = obj + N;
    Ответ написан
    2 комментария
  • Почему возникает ошибка "empty is not a member of std::locale"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    std::locale::empty()
    Компилятор выдает ошибку "empty is not a member of std::locale"

    empty и в самом деле не является членом std::locale. Я подозреваю, что вы хотели написать
    wif.imbue(std::locale(std::locale(), new std::codecvt_utf8<wchar_t,0x10ffff, std::consume_header>));

    либо
    static std::locale empty;
    wif.imbue(std::locale(empty, new std::codecvt_utf8<wchar_t,0x10ffff, std::consume_header>));
    Ответ написан
    Комментировать