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

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

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

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

22.02.2014, 23:11. Просмотров 378. Ответов 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++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 23:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Предупреждение(потеря данных из uint в size_t) (C++):

Беззнаковый тип size_t: чем различие между size_t, uintptr_t, ptrdiff_t и intptr_t? - C++
В чем вообще его смысл? Разве запись double a = {1,2,3}; int i = 1; *(a+i)+=1; значит, что мы перепрыгивам вперед по...

Потеря данных в string - C++
Здравствуйте, у меня возникла проблема со string a: когда я ввожу значение слова через код, то программа работает, а если через cin, т.е...

Связный список, потеря данных - C++
Есть один список нахожу по ключу значения удаляю его из списка (все работает) , потом пытаюсь то что удалил внести в новый список и получаю...

size_t и npos - C++
Здраствуйте! Тут в одной теме нашёл код #include<string> #include<iostream> int main(){ std::string str="/.+(STL).$1/"; ...

size_t в операторе for - C++
Здравствуйте. Возникла проблема с типом size_t. Данный цикл почему то бесконечен for ( size_t j = 10; j >= 0; j-- ) { ; } Если...

Что такое Size_t - C++
size_t чет про него так мало инфы и так мутно написанно в инете я так попробывал даже создать переменную но не получилось... И еше мини...

11
Убежденный
Системный программист
Эксперт С++
15684 / 7194 / 1136
Регистрация: 02.05.2013
Сообщений: 11,630
Записей в блоге: 1
Завершенные тесты: 1
23.02.2014, 11:51 #2
sizeof (uint) == 8.
sizeof (size_t) == 4 (для x86).
Поэтому при приведении uint в size_t часть значения может потеряться.
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
23.02.2014, 12:24 #3
del
0
FinancialShark
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
23.02.2014, 13:41  [ТС] #4
конфиг стоит х64 sizeof(size_t) = 8, sizeof(uint) = 8. то есть они одинаковы по размеру но все равно предупреждение(((
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
23.02.2014, 13:53 #5
Цитата Сообщение от FinancialShark Посмотреть сообщение
они одинаковы по размеру но все равно предупреждение
Какая версия VS?
0
FinancialShark
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
23.02.2014, 14:06  [ТС] #6
2013

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

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

косяк был в настройках проекта
0
23.02.2014, 14:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2014, 14:26
Привет! Вот еще темы с ответами:

А где size_t декларирован? - C++
А где size_t декларирован?

Malloc для size_t - C++
структура вида struct BufferParam { double* pBuffer; COLORREF color; size_t size; };

uint32, size_t и подобные им - C++
Собственно, в чем смысл данных типов, в отличие от обычных unsigned int, int и подобных им?

Пользовательский operator new(size_t) - C++
Всем привет! Подскажите пожалуйста, как так получается, что при перегрузке operator new (например, в пользовательском классе) дальнейший...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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