Прежде всего, я новичок в C ++, и я использую Xcode 4.6.2. Конфигурация компилятора по умолчанию. Я только переключил компилятор на GCC 4.2.
Если я скомпилирую свой маленький код, я получу следующие предупреждения:
Неявное преобразование сокращает 64-битное значение до 32-битного
Неявное преобразование теряет целочисленную точность: «unsigned long» в «unsigned int»
и это код, который вызывает предупреждения:
median = temps[temps.size()/2];
Подсказка: Temps является вектором двойного, а медиана является двойным
Что мне нужно сделать, чтобы избавиться от этих предупреждений? Можно ли справиться с этим с помощью конфигурации компилятора (я не имею в виду отключение предупреждений ;-)) или мне нужно изменить свой код?
temps.size()
возвращает (из того, что я могу прочитать) без знака долго, пока 2
является (без знака) int.
пытаться
temps[(unsigned long)temps.size()/(unsigned long)2]
или же
temps[(unsigned long)((unsigned long)temps.size()/(unsigned long)2)]
В настройках проекта перейдите в раздел «LLVM GCC 4.2 — предупреждения» или в разделы, соответствующие вашему компилятору, и выберите «запретить все предупреждения».
Нет, я столкнулся с той же проблемой в X-CODE с вышеупомянутым компилятором «Apple LLVM Compiler 4.2», и она была решена с использованием «unsigned long int» вместо «int» типа данных …