Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FinancialShark
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
#1

Предупреждение(потеря данных из uint в size_t) - C++

22.02.2014, 23:11. Просмотров 356. Ответов 11
Метки нет (Все метки)

Приветствую всех.

есть такой код:
C++ (Qt)
1
2
3
4
5
6
7
typedef unsigned long long int uint;
.......
double* arr;
....... 
uint count;
count = .....;
arr = (double*)realloc(arr, sizeof(double)*count);
выдает предупреждение(потеря данных из uint в size_t) хотя перед этим не каких предупреждений не было.
компилятор VC++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 23:11     Предупреждение(потеря данных из uint в size_t)
Посмотрите здесь:

C++ как можно перевести `int*' to `UINT'
size_t в операторе for C++
size_t и npos C++
C++ uint32, size_t и подобные им
C++ Пользовательский operator new(size_t)
Malloc для size_t C++
C++ Связный список, потеря данных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
Эксперт С++
15173 / 6805 / 1073
Регистрация: 02.05.2013
Сообщений: 11,118
Завершенные тесты: 1
23.02.2014, 11:51     Предупреждение(потеря данных из uint в size_t) #2
sizeof (uint) == 8.
sizeof (size_t) == 4 (для x86).
Поэтому при приведении uint в size_t часть значения может потеряться.
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.02.2014, 12:24     Предупреждение(потеря данных из uint в size_t) #3
del
FinancialShark
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
23.02.2014, 13:41  [ТС]     Предупреждение(потеря данных из uint в size_t) #4
конфиг стоит х64 sizeof(size_t) = 8, sizeof(uint) = 8. то есть они одинаковы по размеру но все равно предупреждение(((
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.02.2014, 13:53     Предупреждение(потеря данных из uint в size_t) #5
Цитата Сообщение от FinancialShark Посмотреть сообщение
они одинаковы по размеру но все равно предупреждение
Какая версия VS?
FinancialShark
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
23.02.2014, 14:06  [ТС]     Предупреждение(потеря данных из uint в size_t) #6
2013

Добавлено через 3 минуты
так же еще один баг:

C++ (Qt)
1
2
3
4
5
6
class MyClass
{
     MyClass(void) {}
     MyClass(double*) {} //ошибка член MyClass::MyClass(void) - уже объявлен.
.........
}
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.02.2014, 14:06     Предупреждение(потеря данных из uint в size_t) #7
FinancialShark, странно. Я правда на 2012 проверял. А на какую конкретно строку Вашего кода пишет предупреждение?
FinancialShark
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
23.02.2014, 14:08  [ТС]     Предупреждение(потеря данных из uint в size_t) #8
первое сообщение 7 - я строка;
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.02.2014, 14:14     Предупреждение(потеря данных из uint в size_t) #9
А что Вы имели ввиду, говоря:
Цитата Сообщение от FinancialShark Посмотреть сообщение
хотя перед этим не каких предупреждений не было.
Где-то ранее в коде уже было преобразование из uint в size_t?
FinancialShark
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
23.02.2014, 14:21  [ТС]     Предупреждение(потеря данных из uint в size_t) #10
вчера запустил VS, он предложил обновиться и теперь "катастрофа", .... не понятно косяки у меня в коде или в VS.....
Убежденный
Системный программист
Эксперт С++
15173 / 6805 / 1073
Регистрация: 02.05.2013
Сообщений: 11,118
Завершенные тесты: 1
23.02.2014, 14:22     Предупреждение(потеря данных из uint в size_t) #11
Цитата Сообщение от FinancialShark Посмотреть сообщение
конфиг стоит х64 sizeof(size_t) = 8, sizeof(uint) = 8. то есть они одинаковы по размеру но все равно предупреждение
Проверил на VC++2010, x64, warning level максимальный.
Никаких предупреждений нет. VS2013 под рукой нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2014, 14:26     Предупреждение(потеря данных из uint в size_t)
Еще ссылки по теме:

C++ А где size_t декларирован?
Что такое Size_t C++
Потеря данных в string C++
C++ Типы size_t перевести в string
Ошибка при использовании size_t C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
FinancialShark
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
23.02.2014, 14:26  [ТС]     Предупреждение(потеря данных из uint в size_t) #12
нашел косяк.... исправил .... все работает....

косяк был в настройках проекта
Yandex
Объявления
23.02.2014, 14:26     Предупреждение(потеря данных из uint в size_t)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru