Пользователь пока ничего не рассказал о себе

Достижения

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

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

Все теги (18)

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

Все ответы (21)
  • Можно ли заменить if в данном случае?

    dnovikoff
    @dnovikoff
    Тернарный оператор может быть применен, если выражения имеют одинаковый результирующий тип.

    Я не вижу какого типа у вас z, но предположу, что не const char*
    В случае, если это const char*, то условие как минимум странное.

    Для данного примера тернарный оператор применен быть не может.

    Для такого примера его применить можно:
    cout << (z < 0 ? "Error" : "Ok") << endl;
    Не забывайте, что оператор << имеет больший приоритет, чем оператор меньше

    Update:
    Коллега в предидущем ответе предложил достаточно оригинальный способ
    ((z<0)?(std::cout << "Error"):(std::cout << z)) << std::endl;

    Работать это будет, т.к. у обоих выражений будет одинаковый результирующий тип - std::ostream
    Ответ написан
    Комментировать
  • В чем разница между [тип] const * и const [тип] const *?

    dnovikoff
    @dnovikoff
    Очень странный пример.
    Между const [type] и [type] const вообще нет никакой разницы - оба раза const применяется к типу
    const [type] const - это двойное применение const к типу, что вызовет ошибку компиляции.

    В случае если const стоит после звездочки, то оператор const применяется к указателю
    То есть [type] * const

    Так же возможны равнозанчные варианты
    [type] const * const
    и
    const [type] * const
    где const применен и к типу и к указателю

    Говоря простыми словами:
    1. Если const относится к типу (до звездочки), то данные по указателю менять нельзя
    2. Если const относится к указателю (после звездочки), то нельзя менять менять сам указатель
    Ответ написан
    Комментировать
  • Почему появилась мода на новый синтаксис?

    dnovikoff
    @dnovikoff
    Вот пример из документации Го:
    blog.golang.org/gos-declaration-syntax

    У них две главных причины:
    1. Удобство чтения
    Не "Типа T переменная A", а "Переменная A типа T"
    2. Удобство описания указателей на функции
    Cишный "int (*T)(int)" против нового "T func(int)int"

    Лично на мой вкус это к реальным проблемам программирования отношения никакого не имеет и 90% объяснения почему "так лучше" высосаны из пальца. В каком порядке - без разницы.
    Единственный здравый аргумент - это то, что некоторые аспекты парсинга кода компилятором могут оказаться проще благодаря такому подходу.
    Ответ написан
    Комментировать
  • Множственное наследование?

    dnovikoff
    @dnovikoff
    Ответ - оба метода.
    Обращаться к ним можно будет как Base1::foo() и Base2::foo()

    При обращении возникнет ошибка неоднозначности выбора метода, если не указать явно класс.

    П.С.
    ; ставится после определения класса, а после определения метода ее ставить не нужно.
    Ответ написан
    Комментировать
  • Почему float округляет?

    dnovikoff
    @dnovikoff
    float(informatics+algorithmization+algorithm)/3;

    В вашем примере сначала вычисляется int (округляется), а потом переводится в float.
    Нужно перед делением перевести сумму в float
    Ответ написан
    1 комментарий

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

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