• В чём разница между операндом и литералом?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Слово "литерал" переводится как "буквальный". Это объект, значение которого -- его буквальное значение. Например: "hello" -- это строковый литерал со значением "hello". Или 42 -- это целочисленный литерал со значением 42. Противоположностью литерала, в некотором смысле, является переменная. Переменная -- это объект, значение которого -- последнее присвоенное ему значение. Например: char a[] = "hello world"; a -- это строковая переменная, со значением "hello world". Или int answer = 40 + 2; answer -- целочисленная переменная со значением 42.

    Операнд -- это аргумент операции. Во многих контекстах литералы и переменные могут быть операндами. Например: a[0]; операция здесь -- [], взятие элемента массива, операнды -- a и 0, один из них -- переменная, другой -- литерал.
    Ответ написан
    Комментировать
  • Как происходит визуализация интерфейса декстопных приложений?

    @Mercury13
    Программист на «си с крестами» и не только
    УРОВЕНЬ 1. ПРОГРАММНОЕ РИСОВАНИЕ. В экстремальном случае — программист сам рисует элементы управления, как на Canvas’е. Его опустим. Так, например, поступают в разработке игр, когда элементов мало, и они должны быть предельно стилизованы. Но и в таком случае лучше делать библиотеку объектов.

    Ещё прямым рисованием часто пользовались в текстовом режиме, особенно без мыши, где постоянно были какие-то нюансы, мешавшие сделать свою библиотеку — например, потому, что лучше было представить программу как одно большое меню, а не как кучу маленьких пунктов.

    УРОВЕНЬ 2. ОБЪЕКТНАЯ БИБЛИОТЕКА. Часто ОС и/или система программирования имеют свою библиотеку элементов управления. В таком случае получается что-то типа.
    program HomeMadeForm;
    
    uses
      Vcl.Forms, Vcl.StdCtrls;
    
    {$R *.res}
    
    var
      fm : TForm;
      bt : TButton;
    
    begin
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
    
      fm := TForm.Create(nil);
      fm.Width := 400;
      fm.Height := 200;
      fm.Caption := 'Test';
    
      bt := TButton.Create(fm);
      bt.Parent := fm;
      bt.Caption := 'Go!';
      bt.Left := 150;
      bt.Top := 80;
    
      fm.ShowModal;
      fm.Free;
    end.


    УРОВЕНЬ 3. ВИЗУАЛЬНОЕ РИСОВАНИЕ. Наконец, существуют механизмы рисования форм: Qt Widgets, Qt Quick, VCL, WxWidgets, Windows Forms… В таком случае программист просто рисует форму, а про механизмы конструирования-позиционирования не думает. Создал форму, на неё поставил кнопку, к кнопке приделал событие OnClick — и вот уже при нажатии кнопки вызывается событие.
    5b006b57a3c2f727637474.png

    Существуют и HTML-подобные механизмы. Например, элементы HTML есть в Apache Cordova, обеих разновидностях Qt. Используют их, потому как удобно, но механизмы разбора HTML довольно сложны и потому не везде есть.
    Ответ написан
    Комментировать
  • Время программы 2,062 надо 2 сек, как сделать?

    @res2001
    Developer, ex-admin
    Можно немного сэкономить, если прочитать сразу весь файл в буфер, а в массив загонять через std::stringstream или вообще руками. Аналогично и с записью - сначала преобразуете в текстовый буфер, затем оптом пишете в файл одной операцией. Файл при этом открывайте как бинарный.
    Возможно, если применить другой алгоритм сортировки то же будет увеличение производительности. В стандартной библиотеке далеко не самый быстрый алгоритм.
    Ответ написан
    Комментировать
  • Как лучше сохранить данные?

    rim89
    @rim89
    программист-велосипедист
    json ? где вместо удаления просто менять статус
    Ответ написан
    4 комментария
  • Как учить C++ программисту который не учился в вузе в данной сфере?

    @chromimon
    Обучать вас С++ вообще не является целью ВУЗа.
    Язык можно прекрасно изучить или ПТУ или в школе или вообще самому.
    ВУЗ дает более общие знания, чем банальный язык программирования.
    Ответ написан
  • Когда устанавливаешь собранный из исходников софт, его можно удалить через apt-get remove? или только ручками?

    3vi1_0n3
    @3vi1_0n3
    Сначала make, потом собирайте пакет при помощи checkinstall, тогда можно будет удалить при помощи пакетного менеджера
    Ответ написан
    Комментировать
  • С++ Как поменять символ на другой?

    @res2001
    Developer, ex-admin
    a[2]='n';
    В двойных кавычках - это строка с завершающим нулем, даже если она содержит 1 символ. В одинарных кавычках - символ.
    Ответ написан
    Комментировать
  • Возникает ошибка Ошибка C4700 использована неинициализированная локальная переменная как исправить?

    @Mercury13
    Программист на «си с крестами» и не только
    #include "stdio.h"
    #include "stdlib.h"

    Лучше это писать в угловых скобках.

    double dr(double zb)
    {
        return zb = (rand() % 100) / (100 * 1.0);
    }

    Присваиваем параметру zb что-то, чтобы его похѣрить? Параметр будет жить до конца функции и НЕ ВЕРНЁТСЯ в вызвавшую программу (параметры передаются по копии).
    Кстати, параметр zb ни на что не используется: что бы вы ни передали туда снаружи, подпрограмма в этот параметр не посмотрит.

    printf("%lf", dr(double zb));
    На G++ не скомпилировалось. Ну, написал dr(0), благо параметр не используется ни на что.

    if (d == e)
    {
        printf("Win! your cash:%lf", winWay(a, b));

    C:\TestApps\ErrUninitLocal\main.cpp|30|warning: 'd' may be used uninitialized in this function [-Wmaybe-uninitialized]|
    А действительно, переменная d нигде никому не присваивается.

    И ещё одно. Я не знаю, как действует Visual C, но модификатор l для формата %f нужен для scanf, но не нужен для printf. Вот так-то всё это дело устроено.

    double a = winWay(a, b);
    }

    Что мы делаем? Присваиваем локальной переменной, чьё имя пересекается с более ранней переменной, чтобы её сразу же похѣрить? Она доживёт до ближайшей закрытой скобки.

    C:\TestApps\ErrUninitLocal\main.cpp|33|warning: 'a' may be used uninitialized in this function [-Wmaybe-uninitialized]|
    Тут вообще забавно работает. double a — считаем, что a определилась. = winWay(a, b) — считаем, что используется ОНА ЖЕ, а не более ранняя a. Естественно, неинициализированная.

    (аналогично с loseway)
    C:\TestApps\ErrUninitLocal\main.cpp|38|warning: 'a' may be used uninitialized in this function [-Wmaybe-uninitialized]|
    Ответ написан
    Комментировать
  • Что проще использовать QCustomPlot или QCharts для построения столбчатых гистограмм новичку?

    hakain
    @hakain
    Немного знаю С/С++, Qt, и микроконтроллеры
    Лично я использую QCustomPlot для вывода любых графиков, он очень прост и в использовании и при создании динамических графиков. Поэтому советую его.
    Ответ написан
    Комментировать
  • Почему в с++ не могут избавиться от переполнения буфера?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Почему в с++ не могут избавиться от переполнения буфера?

    Могут и избавились, для тривиальных штук есть контейнеры, строки и всё такое, там всё работает с помощью магии.
    но не как не могу понять, почему Си(и,или с++) остается самым популярным в мире языком, без которого ни один большой проект обойтись не может, и при этом самым уязвимым

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

    Так можно не использовать. А вообще из C++ очень и очень неохотно выпиливают устаревший функционал для обратной совместимости.
    Ответ написан
    Комментировать
  • Где искать в памяти qml файл?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    rootObjects() возвращает только список объектов, которые были загружены с помощью load() или указаны в конструкторе QQmlApplicationEngine. Если вы ничего не загружали, то список будет пустым.
    Чудес не бывает, если QList::operator[], говорит, что даже первого элемента нет, значит он пуст. Скорее всего там 0 элементов в отладчике. Если их не 0, но обращение к первому элементу вызывает assert, то там где-то выше может быть UB или память испортилась.
    Ответ написан
    Комментировать
  • Как связать ВЕБ-разработку и программирование ПЛИС/МК?

    32bit_me
    @32bit_me
    Программист, встраиваемые системы
    Теоретически интернет вещей как-то это всё объединяет, а на практике эти вещи связаны чуть более, чем никак, поэтому я бы вам посоветовал выбрать что-то одно, и в этом направлении двигаться.
    Ответ написан
    Комментировать
  • Как связать ВЕБ-разработку и программирование ПЛИС/МК?

    @LCLR
    Изучайте интернет вещей. В качестве стартовых проектов можно сделать что-нибудь на STM32 и ESP8266, а там уже сориентируетесь. ПЛИС обычно применяют для многопоточной обработки данных.

    На счет актуальности такого симбиоза навыков сказать не могу. Сам окончил радиотехнический ВУЗ, устроился не по специальности, какое-то время занимался разработкой на МК/ПЛИС, одновременно пытаясь найти профильную работу с лучшей оплатой. В итоге оставил электронику в качестве хобби и начал осваивать веб-разработку (фронтенд). Для профессиональной деятельности у последней есть важные преимущества: возможно обучение без финансовых затрат (теперь не нужно покупать радиоэлементы, измерительное оборудование, инструменты, расходные материалы); более узкий спектр работ (чтобы сделать радиоэлектронное устройство, нужны навыки механической и химической обработки, пайки и монтажа, схемотехники, трассировки, программирования); возможность удаленной работы (можно, находясь в каких-нибудь Нижних Черемушках, делать работу для заказчика из Сингапура и получать достойную оплату). Из минусов пока вижу большую конкуренцию на рынке труда и необходимость разбираться в колоссальном объеме разнородной информации. Для меня плюсы гораздо весомее, поэтому сомнений в сделанном выборе не возникает.
    Ответ написан
    Комментировать
  • Как связать ВЕБ-разработку и программирование ПЛИС/МК?

    Есть хороший друг, ну очень крутой спец по микроконтроллерам и микропроцессорам.
    Есть я. Довольно таки посредственный спец в IT. Занимаюсь 1С автоматизацией.
    Как мне кажется я больше зарабатываю, причем на порядок.
    Другое дело, что он особо то за бугор и не рвется, а тут в России не платят..
    Ответ написан
    Комментировать
  • Как разобраться в архитектуре чужого приложения?

    tema_sun
    @tema_sun
    Несколько месяцев - это ничто. Продолжайте обучение.

    Но вообще никто не читает код просто так, как книгу. Обычно ты получаешь задание решить какую-то проблему, находишь точку входа в эту проблему и дальше "разматываешь" код до места возникновения проблемы. Другой разговор, что для этого бывает необходимо половину проекта перелопатить.
    Ответ написан
    5 комментариев
  • Перспективность профессии программиста микроконтроллеров?

    @n12eq3
    - работа есть, по объёму меньше чем околоадминного эникейства и говнокода на пиэйчпи. забугорных заказов кратно больше, нежели "отечественных", касается всех уровней сложности/денег.
    - в среднем "программист" микроконтроллеров никому не нужен, заказов где есть точное и полное тз, описание периферии, внешних подключений = очень мало, самый минимум это полные знания касательно железа, подключения и обвязки самого контроллера.
    - самодостаточный хороший админ это человек+ноутбук. самодостаточный хороший "программист микроконтроллеров" это куча дополнительного не очевидного хлама.
    - по возможности поточной работы (сопровождение проектов) в среднем находится где-то между исполнителями софта и одноразовыми хардварщиками. найти работу, где будет один долгий проект на проектирование+поддержка, достаточно сложно и рассчитывать на это в целом не стоит.
    Ответ написан
    1 комментарий
  • СИ и С++. Чем они так опасны, если их использовать вместе?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Если люди, от которых вы это слышали не могут объяснить чем они опасны, то не слушайте этих людей.
    Ответ написан
    Комментировать
  • Постоянные запросы к QMap или локальная копия объекта. Где лучшая производительность?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Ваш код тормозит? Если да, то профилируйте, и смотрите где. Если не профилировали, то и нечего говорить о производительности :)

    Метод value всегда вернёт копию значения. Т.е. логично её где-то сохранить, если вам надо несколько раз обращаться к разным полям. Можно избежать копирования, используя итератор или константную ссылку + оператор [] у мапы.

    Почитать в официальной документации Qt. Можно ещё на QHash посмотреть, там поиск быстрее, но на ключ накладываются другие ограничения.
    Ответ написан
    Комментировать
  • Бесплатная IDE для C++?

    flygrounder
    @flygrounder
    Python/Django
    QT Creator - менее громоздкая чем студия, да и есть не только под Windows(вдруг систему сменить захотите)

    P.S.
    Вопрос действительно не корректен: вы говорите про IDE, а не про компилятор
    Ответ написан
    Комментировать
  • Бесплатная IDE для C++?

    @Wexter
    VS Express/QtCreator/MinGW
    Ответ написан
    Комментировать