Чтобы понять, зачем нужен static_cast, достаточно понять, какие проблемы он решает.
В соседнем комментарии привели пример:
long long timeout_min =
((long long)read_config("timeout_sec") + 59) / 60;
Код компилируется, но в нем ошибка, если read_config возвращает, например, указатель.
Что делать? Можно исправить код и счастливо пойти дальше собирать те же грабли. А можно что-то придумать, чтобы избежать таких ошибок в дальнейшем.
Что придумать? Например, не разрешать приводить что угодно к чему угодно. Для этого придумали семейство операций: static_cast, dynamic_cast, reinterpret_cast, const_cast. Каждая из них разрешает только некоторые виды приведений типов.
В приведенном примере кода static_cast не разрешит преобразование указателя к целочисленному типу и приведет к ошибке компиляции.
Но вообще говоря, это костыли, борьба с симптомами болезни, а не с самой болезнью. Приведений типов в коде лучше, по возможности, избегать. ЕМНИП поэтому для операций приведения выбрали такие уродливые длинные названия — чтобы мотивировать разработчиков от этих операций избавляться, переписав код (но конечно ни в коем случае не возвращаться обратно к сишному приведению!). Если же по каким-то причинам приведение типа действительно необходимо, то опять хорошо — уродливый синтаксис поможет не забывать об этом опасном месте в коде. Не лишним будет и написать объяснительную в комментарии, что это за место такое, и почему красиво сделать не получилось.
В свое время осознал, что Лурк это не только лулзы, когда прочитал там статью про теорию относительности. В Лурке статья написана нормальным понятным языком в отличие от сухой научной статьи в Википедии. Разница в подходе, как между книгой популяризатора науки и учебником.
По картинкам и описанию я вижу, что разработчики добавили несколько «улучшений»:
Теперь пассажиры должны точно вписываться в габариты гробовидной полки.
Лично мне, например, для нормального сна в ногах нужно столько же места, сколько в голове. Не все спят по стойке смирно. А длина полки учитывает место под подушку? У меня, с моим ростом 170, вытянутые ноги не помещаются на обычной плацкартной полке. Спасает то, что на обычной полке можно вытянуться по диагонали или свесить ноги.
Теперь никаких посиделок в вагоне.
Я, бывает, еду в поезде с попутчиками. В обычном плацкарте я могу залезть наверх на свою полку, либо спуститься на нижнюю и посидеть с попутчиками. Как с этим обстоит в новом вагоне? Где людям предлагается сидеть? Или они всю дорогу должны лежать в этих гробах? Что это за гробница на колесах?
Забудьте о красивых видах за окном.
Одно из самых ярких впечатлений от путешествия в поезде, это красивые виды, которыми наслаждаешься через большие окна с обеих сторон вагона. По версии разработчиков нового вагона, настоящим путешественникам это ни к чему? И большие аварийные выходы тоже не нужны?
Отдайте ваш багаж.
Лично мне спокойнее и удобнее, когда мой багаж у меня под рукой.
Итого проект выглядит как нечто среднее по комфорту между сидячим и плацкартным вагонами. Надеюсь ими плацкарт не будут заменять.
Так что я упустил, какие именно проблемы всё-таки решили разработчики в этом проекте? Больше людей в вагон влезло или что?
Все мы привыкли к бонусам за повторную покупку. Компания нам как бы говорит "покупайте у нас ещё!", мессадж понятен. А тут бонус за первую покупку и мессадж "покупайте у нас и больше никогда не возвращайтесь, мы вас запомнили -_-". Как то контринтуитивно. На что они надеятся? Что никто не узнает о такой политике и лошки всё равно придут ещё раз?
А вы уверены, что ваш позвоночник к старости скажет спасибо за такие тренировки? Насколько я понимаю, мышцы то тренируются, а вот позвоночник только изнашивается и не восстанавливается, потому что не успел до конца приспособиться к вертикальным нагрузкам. Не лучше ли все таки минимизировать нагрузки на позвоночник по возможности?
Как-то обидно стало за средних обывателей и Вась с хрустящим рублем, с таким презрением вы о нас написали. За всех обывателей не скажу, скажу лишь, как я дошел до жизни такой. Во-первых, когда вышел первый Железный человек, это было достаточно свежо. Фильм приятно выделялся на фоне большинства кинокомиксов того времени. Планка достаточно высока, и хотя немногие последующие марвеловские фильмы ее достигали, но уж точно нельзя их все назвать дерьмом. Мне кстати сильно больше 12 лет, читаю книги с 90-х годов, русскую фантастику в своё время зачитал до дыр, того же Лукьяненко и Звягинцева, поэтому есть с чем сравнивать, если что.
Конечно, после Железного человека заработал бесконечный самоповторяющийся конвейер, которому можно долго удивляться, пока не узнаешь простой факт — с конвейера выходит не череда одинаковых фильмов, а очередные эпизоды одного сериала под названием MCU (Marvel Cinematic Universe). А так как это сериал, то его эпизоды нужно смотреть в определенном порядке, и тогда весь балаган, происходящий на экране, начинает магическим образом обретать смысл.
Если посмотреть рейтинги на IMDB, то можно заметить еще один интересный факт — рейтинг сериалов в среднем выше рейтинга фильмов. Видимо, люди склонны больше ценить занятия, на которые тратят больше времени. В этом и состоит секрет популярности марвеловских фильмов — если уже отсмотрел с десяток серий, то с большей вероятностью посмотришь очередную, это нормально.
Простой вопрос, решается за полминуты. Замечаешь, что названия единиц и десятков имеют свойство повторяться за одним явным исключением - сорок и четыре. Смотришь, какие уникальные буквы из этих названий есть в ответах - пожалуйста, в последнем ответе к, ч и ы.
В 2013 году Гелсингер стал соучредителем христианской организации Transforming the Bay with Christ (TBC), цель которой – в ближайшее десятилетие обратить в веру миллион человек. Если этого вам показалось мало...
Очень сильный аргумент, теперь мы спокойны за Intel. </sarcasm off>
1) Включайте все проверки компилятора по максимуму.
2) Не смешивайте разные типы в одном выражении.
3) А особенно не смешивайте знаковые и беззнаковые типы.
4) И вообще, не пользуйтесь беззнаковыми типами без крайней необходимости (например, для ьитовых операций). С чего вы взяли, что это тип "по умолчанию?". Послушаем что на этот счёт говорит Страуструп:
ES.102: Use signed types for arithmetic
Reason
Because most arithmetic is assumed to be signed; x - y yields a negative number when y > x except in the rare cases where you really want modulo arithmetic.
Example
Unsigned arithmetic can yield surprising results if you are not expecting it. This is even more true for mixed signed and unsigned arithmetic.
Oriflame: *сливает скан моего паспорта*
Государство: Аяяяй! Давайте мне две копейки.
Я: Ура! Мой ущерб полностью возмещен! Спасибо государству за защиту
В соседнем комментарии привели пример:
Код компилируется, но в нем ошибка, если read_config возвращает, например, указатель.
Что делать? Можно исправить код и счастливо пойти дальше собирать те же грабли. А можно что-то придумать, чтобы избежать таких ошибок в дальнейшем.
Что придумать? Например, не разрешать приводить что угодно к чему угодно. Для этого придумали семейство операций: static_cast, dynamic_cast, reinterpret_cast, const_cast. Каждая из них разрешает только некоторые виды приведений типов.
В приведенном примере кода static_cast не разрешит преобразование указателя к целочисленному типу и приведет к ошибке компиляции.
Но вообще говоря, это костыли, борьба с симптомами болезни, а не с самой болезнью. Приведений типов в коде лучше, по возможности, избегать. ЕМНИП поэтому для операций приведения выбрали такие уродливые длинные названия — чтобы мотивировать разработчиков от этих операций избавляться, переписав код (но конечно ни в коем случае не возвращаться обратно к сишному приведению!). Если же по каким-то причинам приведение типа действительно необходимо, то опять хорошо — уродливый синтаксис поможет не забывать об этом опасном месте в коде. Не лишним будет и написать объяснительную в комментарии, что это за место такое, и почему красиво сделать не получилось.
Ага, то есть те, кто снимает жестокое обращение с детьми, отключат эту функцию. И зачем она тогда нужна?
Лично мне, например, для нормального сна в ногах нужно столько же места, сколько в голове. Не все спят по стойке смирно. А длина полки учитывает место под подушку? У меня, с моим ростом 170, вытянутые ноги не помещаются на обычной плацкартной полке. Спасает то, что на обычной полке можно вытянуться по диагонали или свесить ноги.
Я, бывает, еду в поезде с попутчиками. В обычном плацкарте я могу залезть наверх на свою полку, либо спуститься на нижнюю и посидеть с попутчиками. Как с этим обстоит в новом вагоне? Где людям предлагается сидеть? Или они всю дорогу должны лежать в этих гробах? Что это за гробница на колесах?
Одно из самых ярких впечатлений от путешествия в поезде, это красивые виды, которыми наслаждаешься через большие окна с обеих сторон вагона. По версии разработчиков нового вагона, настоящим путешественникам это ни к чему? И большие аварийные выходы тоже не нужны?
Лично мне спокойнее и удобнее, когда мой багаж у меня под рукой.
Итого проект выглядит как нечто среднее по комфорту между сидячим и плацкартным вагонами. Надеюсь ими плацкарт не будут заменять.
Так что я упустил, какие именно проблемы всё-таки решили разработчики в этом проекте? Больше людей в вагон влезло или что?
Все мы привыкли к бонусам за повторную покупку. Компания нам как бы говорит "покупайте у нас ещё!", мессадж понятен. А тут бонус за первую покупку и мессадж "покупайте у нас и больше никогда не возвращайтесь, мы вас запомнили -_-". Как то контринтуитивно. На что они надеятся? Что никто не узнает о такой политике и лошки всё равно придут ещё раз?
А вы уверены, что ваш позвоночник к старости скажет спасибо за такие тренировки? Насколько я понимаю, мышцы то тренируются, а вот позвоночник только изнашивается и не восстанавливается, потому что не успел до конца приспособиться к вертикальным нагрузкам. Не лучше ли все таки минимизировать нагрузки на позвоночник по возможности?
Может быть Фил снимал сам, не создавая никаких компаний для этого.
IMDb > Company Credits > Production Companies
Решил узнать, что это за сериалы, и похоже, что Netflix их не снимал.
Конечно, после Железного человека заработал бесконечный самоповторяющийся конвейер, которому можно долго удивляться, пока не узнаешь простой факт — с конвейера выходит не череда одинаковых фильмов, а очередные эпизоды одного сериала под названием MCU (Marvel Cinematic Universe). А так как это сериал, то его эпизоды нужно смотреть в определенном порядке, и тогда весь балаган, происходящий на экране, начинает магическим образом обретать смысл.
Если посмотреть рейтинги на IMDB, то можно заметить еще один интересный факт — рейтинг сериалов в среднем выше рейтинга фильмов. Видимо, люди склонны больше ценить занятия, на которые тратят больше времени. В этом и состоит секрет популярности марвеловских фильмов — если уже отсмотрел с десяток серий, то с большей вероятностью посмотришь очередную, это нормально.
Простой вопрос, решается за полминуты. Замечаешь, что названия единиц и десятков имеют свойство повторяться за одним явным исключением - сорок и четыре. Смотришь, какие уникальные буквы из этих названий есть в ответах - пожалуйста, в последнем ответе к, ч и ы.
UPD: Оказалось, что нужно нажать Play в контекстном меню.
Очень сильный аргумент, теперь мы спокойны за Intel. </sarcasm off>
Есть такое, у Страуструпа в документе по ссылке где-то упомянут этот досадный момент.
1) Включайте все проверки компилятора по максимуму.
2) Не смешивайте разные типы в одном выражении.
3) А особенно не смешивайте знаковые и беззнаковые типы.
4) И вообще, не пользуйтесь беззнаковыми типами без крайней необходимости (например, для ьитовых операций). С чего вы взяли, что это тип "по умолчанию?". Послушаем что на этот счёт говорит Страуструп:
ES.102: Use signed types for arithmeticReasonBecause most arithmetic is assumed to be signed; x - y yields a negative number when y > x except in the rare cases where you really want modulo arithmetic.ExampleUnsigned arithmetic can yield surprising results if you are not expecting it. This is even more true for mixed signed and unsigned arithmetic.