• Почему для добавления единичного бита используется именно 0x80?

    Daemon23RUS
    @Daemon23RUS
    (unsigned char) это аж целых 8 !!! бит а 0x80 в битовом представлении = 10000000
    Т.е 1 еденичка и все нули.
    Ответ написан
    Комментировать
  • Почему компилятор выдает ошибку error: expected declaration or statement at end of input?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пропущена закрывающая фигурная скобка в print_arr
    Ответ написан
    Комментировать
  • Как сделать графику на fasm?

    TrueBers
    @TrueBers
    Гуглю за еду
    Учить ассемблер и писать свою ОС это примерно как учиться сварке и строить космический корабль.
    Ассемблер это только 1% от всего, что нужно изучить.
    Тебе нужно решить кучу архитектурных проблем сначала, а потом уже думать о графике.

    Посмотри вот сюда. Там описаны фазы создания операционной системы. Согласно этому туториалу, графика это уже третья фаза. Так что тебе ещё первые две предстоит осилить, прежде чем приступать к графике.
    Ответ написан
    7 комментариев
  • Как сделать одномерный массив в си?

    @res2001
    Developer, ex-admin
    Если количество цифр фиксировано, то просто перечислите в формате scanf сразу их все.
    Если количество цифр может меняться, то ...
    Вводить как строку и потом парсить ее с помощью strtol, кода будет, конечно, больше, чем сейчас.
    Строку вводить в какой-то достаточно большой буфер длинной в 1 или 4 кб.
    При превышении буфера можно выдавать ошибку.
    Или ввод оформить в цикл, на случай, если буфер заполнится, а Enter пользователь еще не нажал. Выход из цикла по нахождению символа '/n' в буфере. В таком случае буфер можно делать меньше. Но тут возникает дополнительная проблема с неоконченным вводом, т.е. пользователь вводит число 123456 и допустим 123 прилетело в конец прошлого буфера, а 456 в начало следующего. Это надо будет решать в коде.

    Есть проблема с фиксированным размером массива.
    Если нужен произвольный размер входных данных, то можно, предварительно выделять массив какого-нибудь начального размера, если в ходе парсинга размер массива превысится, то сделать realloc увеличив размер массива в 2 раза. Ну и надо отдельно хранить количество реально заполненных элементов массива.
    А вообще, массив может оказаться не нужен, если взглянуть на задачу целиком.
    Ответ написан
    1 комментарий
  • Что делать с пайтоном на телефоне?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Что делать с пайтоном на телефоне?

    Ничего.
    Ответ написан
    Комментировать
  • Как следать процерку на ввод целых чисел?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Можно использовать strtol
    int parse(char* str, long* result) {
        char *end = NULL;
        *result = strtol(str, &end, 10);
        if (str == end || *end != '\0' || errno == ERANGE) {
            return -1;
        }
        return 0;
    }


    Пример:
    int main() {
        long value;
        if (parse("12313", &value)) {
            printf("Ошибка");
        } else {
            printf("Результат: %ld", value);
        }
    }
    // 123 -> Результат: 123
    // 123.0 -> Ошибка
    Ответ написан
    Комментировать
  • Почему в Rust использую Tokio?

    @D3lphi
    Потому что она реализует то, чего нет в стандартной библиотеке - асинхронный рантайм. Если писать сетевое приложение без токио, то придется плодить по отдельному потоку на каждый сетевой коннекшен. (на самом деле, речь идет про любой i/o, к которому чтение/запись файлов тоже относится) Каждый из этих потоков большую часть времени будет заблокирован в ожидании завершения сететвого вызова (передачи или приема данных). Однако, операционная система при разблокировке этих тредов будет постоянно переключать контекст для каждого потока и тратить процессорное время.
    Асинхронный подход позволяет обойтись лишь сравнительно небольшим пулом потоков, на которые токио рантайм будет распределять таски (грин треды) и, таким образом, экономить процессорное время.
    Ответ написан
    9 комментариев
  • Как создают интерфейсы в программах?

    Но какой язык разметки и оформления для десктопных программ?

    Какой хочешь, тот и будет.
    1. Хочешь - можно втащить тот же html и css в виде Electron, CEF или чего-то самодельного.
    2. Хочешь - никакого не будет и будешь сам рисовать геометрию на экране.
    3. Хочешь - будет что угодно на спектре от п1 до п2.

    Если тебя интересует именно Си, то можешь посмотреть на GTK, например.
    Ответ написан
    Комментировать
  • Как настроить Git?

    это командная строка, через неё можешь пользоваться гитом, и не только
    Ответ написан
    Комментировать
  • Почему нет записи о printf в секции .plt.dyn?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Но там запись о функции puts, а не printf.

    Это уже оптимизация компилятора. Возможно ты не передаешь printf никаких аргументов и он решил, что проще вызвать puts.
    Такое поведение уже было описано вот тут:
    The C compiler gcc likes to use its knowledge of builtin functions to manipulate code. The version of gcc in NetBSD 4.0.1/macppc will simplify the printf statement to puts("Greeting, Earth!"); so the main function effectively calls puts(3) once and then returns 0.
    Ответ написан
    1 комментарий
  • Почему в Си после main() не ставят ;?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему в Си после main() не ставят ;?

    в С при определении функции не ставят ; между объявлением и телом функции, не только для main, но и для любой другой функции. Согласно стандарту языка, например С99 приводит следующий синтаксис определения функции:
    function-definition:
        declaration-specifiers declarator declaration-list<opt> compound-statement
    declaration-list:
        declaration
        declaration-list declaration


    Этот синтаксис включает в себя также старый формат определения функции (без прототипа), в котором все аргументы должны быть объявлены между закрывающей круглой скобкой и открывающей фигурной, например (из того же стандарта):
    extern int max(a, b)
    int a, b;
    {
        return a > b ? a : b;
    }

    Однако, этот список должен содержать как минимум одно объявление и не может состоять из одной только ;.

    эта строка работает на другом языке?

    о каком "другом" языке речь?
    Ответ написан
    2 комментария
  • Почему метод strip в Python так работает?

    @U235U235
    В документации по этому поводу ясно сказано, что аргумент функции - набор (set) символов, которые будут удалены в конце исходной строки.
    Ответ написан
    Комментировать
  • Перестал работать pacman, что делать?

    @Drno
    Интернета нет / dns не доступен
    Ответ написан
    2 комментария
  • В какой среде практичнее учить и практиковать ассемблер?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    В любой. Что ближе, удобнее, привычнее и доступнее - ту и берите. Если же хочется попробовать разные - VirtualBox вам в помощь. А вот за литературой велкам на васм: https://wasm.in/forums/wasm-books-i-wasm-blogs.22/
    Ответ написан
    Комментировать
  • Что делать, если программа не видит библиотеку iostream?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Понять, что C и C++ - это два разных языка, и либо использовать C++, либо не использовать iostream.
    Ответ написан
    Комментировать
  • Как в базе данных перезаписать весь столбец с id?

    delphinpro
    @delphinpro
    frontend developer
    Сотни раз задавался подобный вопрос.
    Если кратко - не надо этого делать.
    Если нужны детали, воспользуйтесь поиском и изучите ответы на уже заданные вопросы.
    Первые из поисковика:
    Как сделать ID записи последовательными без пропусков?
    https://ru.stackoverflow.com/questions/125644/
    Ответ написан
    Комментировать
  • В чем разница записи массива через указатели?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Проблема в том, что * выполняется перед вычетанием. *(current-1) - это предыдущий элемент. (*current-1) в плохой версии - это текущее значение минус 1.
    Ответ написан
    Комментировать
  • Как можно улучшить код?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как можно улучшить код?

    - отформатировать по какому-нибудь стандарту, чтобы хотя бы строчки не гуляли влево-вправо.
    - пользоваться тернарным оператором вместо if когда это имеет смысл. На мой взгляд, d = n < 0 ? -n : n выглядит куда лучше семистрочного if/else.
    - не дублировать код когда этого легко избежать:
    if(n<0) {
        cout<<"-";
    }


    Ну и добавлю, что у этого кода есть проблема с обработкой входного значения -2147483648.
    Ответ написан
    Комментировать