| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Possible loss of data |
| Автор: frutta007 13.6.2008, 10:59 |
| conversion from "ULONG" to "short", possible loss of data Ребята подскажите плиз, гна что можно заменить, чтоб не было WARNING!! |
| Автор: georain 13.6.2008, 11:07 |
| У тебя происходит преобразование типов где-то в 7 строчке от середины. Если приведёшь свой код можно будет сказать что-то конкретное. |
| Автор: anatox91 13.6.2008, 11:07 |
| компилятор тебе говорит что у тебя возможна потеря данных, т.к. ты из типа unsigned long, у которого диапазон значений где-то от 0 до 9 миллиардов(или больше, точно не помню) конвертируешь в short, у которого диапазон значений от -32 тыс. до + 32 тыс. (примерно) |
| Автор: andrew_121 13.6.2008, 11:28 | ||
| anatox91 - Это с какого перепугу, у 32-ух битной переменной диаппазон 9 миллиардов ? Насколько я знаю, это: 4*1024*1024*1024 = 4294967296.
Точнее: -32767 до 32768. |
| Автор: anatox91 13.6.2008, 11:29 |
| ну да, попутал |
| Автор: georain 13.6.2008, 11:31 |
| Меня больше интересует как заставить новичков читать "вредные советы"? Или они их наоборот читают и выполняют? Добавлено @ 11:39 Я вот не психолог, не знаю педагогично ли вместо ответа на вопрос отсылать в гоогле или учить как жить, но если этого не делать процесс обучения общению может затянутся, или нет? Я честно говоря не помню свой первый пост, пойду поищу чтоли, а то что-то я это.. извините |
| Автор: frutta007 16.6.2008, 19:14 |
| Про код забыл сорри C++ short CStreamOutput :: Write(char data) { ULONG written = 0; Destination->Write(&data, 1, &written); return written; вот на этой строке ошибка, т.е. не ошибка а Warning!! } пробовал пивать так:return (short)written , но сказали это не сильно правильно что можно сделать?? |
| Автор: bronislav 16.6.2008, 19:39 | ||
например измени тип возвращаемого значения на ULONG
|
| Автор: frutta007 16.6.2008, 19:40 |
| Пробовал и так тоже....в этом случае вообще Error возникает!! |
| Автор: bronislav 16.6.2008, 19:44 | ||
Ну да в классе, то он определен с типом short А что функции write нужно обязательно передавать ULONG. Попробуй сделать так:
|
| Автор: frutta007 16.6.2008, 19:48 |
| уже разобрался... надо было вот так return ((written > SHRT_MAX) ? SHRT_MAX : (short)written); спасибо за участие!! |
| Автор: bronislav 16.6.2008, 19:53 |
Но от приведения типов ты так и не избавился ;) Варнинг должен продолжать выскакивать или нет? |
| Автор: frutta007 16.6.2008, 19:58 |
| Уже нет!! |