![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Rutti |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 225 Регистрация: 25.7.2004 Репутация: нет Всего: нет |
Как избавится от подобных предупреждений:
warning C4267: ...: conversion from 'size_t' to 'int', possible loss of data? Имеется ввиду conversion from 'size_t' to 'int'. |
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
использовать соответствующие типы для соответствующих ситуаций... по всей видимости тебе достаточно заменить
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Радикально
![]()
|
|||
|
||||
Rutti |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 225 Регистрация: 25.7.2004 Репутация: нет Всего: нет |
Xenon, ну да. Это по MSDN. Но берут сомнения в необходимости disable.
archimed7592, у меня на этот коод ругается:
|
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
В данном случае: забить.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Greeen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 710 Регистрация: 13.8.2006 Где: Петербург Репутация: 7 Всего: 18 |
-------------------- Подпись больше не нужна |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Нет, так можно не обратить внимание на что-то существенное. Варианта 2: как посоветовал archimed7592, по возможности использовать size_t для индексов, когда размер size_t и т.д. Если нельзя, ставить явное преобразование (ну не обязательно reinterpret_cast, a просто в стиле С). Отключать предупреждение нежелательно - иногда действительно возможна потеря данных. Лучше каждый раз подумать, и явно выразить свои намерения в коде. -------------------- ... |
|||
|
||||
_int64 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 30.1.2007 Репутация: нет Всего: нет |
size_t - unsigned integer
макс. значение size_t в 2 раза больше чем int |
|||
|
||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
(int) i;
-------------------- |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Earnest, я же сказал: в данном случае. Что означало конкретную строчку кода:
и ничего больше. Не вижу смысла здесь городить приведения типов, чтобы избежать предупреждения — это только замаскирует потенциальную ошибку. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Void, в данном случае я соглашусь с Earnest, варнинги желательно убирать. Здесь (int) поставить не грех, имхо.
|
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Как прикажете. Срез при unsigned -> signed или, того хуже, 64 -> 32 (сколько я помню, на x64 у VS sizeof(size_t) == 8) от этого никуда не денется.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
В c99 можно сделать
snprintf(buf,10,"%zu", expression_with_type_size_t ); и не будет никакой срезки. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Гм... ну эти срезы здесь маловероятны...
вероятность того, что количество элементов в контейнере > 2 млрд? Весьма призрачная, как мне кажется. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |