170 похожих чатов

Получаю ворнинг narrowing conversion from "unsigned int" to "int" is

implementation defined. static_cast<int> ворнинг убирает. Почему? Ведь narrowing conversion никуда не пропал, просто делается теперь явно

6 ответов

9 просмотров

Вы таким образом заявляете, что полную ответственность за корректность этого каста берёте на себя. Или нужно, чтобы этот варнинг был неотключаем?

Konstantin- Автор вопроса
Ofee Oficsu
Вы таким образом заявляете, что полную ответственн...

Нет, ворнинг оставлять не нужно, просто хотелось понять, какая логика за этим стоит

Konstantin
Нет, ворнинг оставлять не нужно, просто хотелось п...

Ну, логика именно в том, без явного каста можно было пропустить факт потери точности, не увидев его глазами, поэтому компилятор оказывал вам помощь. Тереть же это делается явно – не только все гарантии на себя взял программист, но и в случае чего, такие места легко видны невооружённым взглядом и без проблем ищутся поиском по тексту в кодовой базе

Konstantin
Нет, ворнинг оставлять не нужно, просто хотелось п...

На самом деле возникает логическое противоречие - должен же существовать способ каста, не приводящий к warning'у, который выражал бы идею "я знаю, что делаю"

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

Konstantin- Автор вопроса
Bulat Ziganshin
во-первых, какой тогда смысл будет в этой языковой...

Насчет первого: это скорее, вопрос о implicit и explicit конверсии. Могут быть перегрузки одного метода, которые принимают как unsigned int, так и singed int. Если мы хотим явно вызвать перегрузку с signed int, то для этого и используем static_cast. Т.е. изначально суть статик_ каста же не в том, чтобы такие ворнинги убирать. Это лишь приятный бонус

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
52
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Guys Who’s kurdish on this group?
Hiwa Amiri
11
Карта сайта