Люблю хороший чай, правильное железо и классические настольные игры.
Контакты

Достижения

Все достижения (6)

Наибольший вклад в теги

Все теги (44)

Лучшие ответы пользователя

Все ответы (102)
  • Почему #define не рекомендуетс к использованию?

    BacCM
    @BacCM
    C++ почти с рождения
    Потому, что
    1. нет контроля типов
    2. нет ограничения по области видимости, типа неймспейсов.
    3. макрос разворачивается подстановкой в месте использования, т.е. там будет вставлен код
    ((a) > (b) ? (a) : (b)) который превратится в ((++a) > (b+10) ? (++a) : (b+10))
    4. макросы сложно отлаживать
    5. неправильно написанный макрос будет компилироваться в непонятно что. Например если убрать те же скобки

    как без них раскроется выражение x = max(a, b) + 10; ?
    x = a > b ? a : b+10;

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

    #include <iostream>
    
    #define mymax(a,b) a>b?a:b
    #define mul(a,b) a*b
    
    int main() 
    {
    
    	std::cout << mymax(5, 10) << std::endl; // Ошибка компиляции
    	std::cout << mul(5+5, 10) << std::endl; // Неожиданно на выходе 55, а не 100
    
    	return 0;
    }
    Ответ написан
    3 комментария
  • Какой хороший учебник для изучения всей информатики с нуля?

    BacCM
    @BacCM
    C++ почти с рождения
    Школьная информатика это вещь в себе. Поэтому изучить её можно только по учебнику и каким-то методическим материалам к этому учебнику. Это я как математик, программист и отец четвертых детей говорю. В каждой школе и в разные годы учебники разные. Местами там всё весьма спорно и правильный ответ на задачи может быть весьма далек от жизни.
    Мой совет попробовать разобраться совместно с друзьями одноклассниками. И если в классе никто не понимает в теме обратиться сначала к учителю с просьбой объяснить, а затем к директору школы.
    Ответ написан
    Комментировать
  • Всегда ли нужно использовать тип int?

    BacCM
    @BacCM
    C++ почти с рождения
    Всё зависит от целей. В подавляющем большинстве случаев можно использовать int и не беспокоиться о перерасходе памяти.
    Задумывается стоит если таких переменных миллиарды или ресурсы очень ограничены.
    Я бы скорее задумывался о возможности переполнения, не всегда результат операции с переменными конкретного типа в него помещается. Это важнее, чем мистическая экономия.
    И еще важно чтобы типы в выражении соответствовали друг другу и ожиданию программиста.
    Ответ написан
    Комментировать
  • Как редактировать json средствами golang?

    BacCM
    @BacCM
    C++ почти с рождения
    Ответ написан
    Комментировать
  • Полиморфизм на собеседовании?

    BacCM
    @BacCM
    C++ почти с рождения
    Есть формальные определения. Есть лозунговые как от Страуструпа. На адекватном собеседовании нужно показать понимание вопроса, а не зазубренные формулировки. В идеале подкрепить объяснение реальными примерами разного вида полиморфизма и примерами где без него вполне можно обойтись.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (27)