Разочаровавшись в gcc Какая версия gcc даст предупреждение на данный код? (комментарий) не проходит много времени, как я сталкиваюсь с ерундой G++. Использовал в программе бинарный поиск и по невнимательности неправильно вызывал функцию, а именно, для массива из 2 элементов, говорил что там 5. Вместо того чтобы возвращать (-1), мне возвращался верный индекс элемента... Под виндой в visual studio возвращает (-1).
#include<iostream>
int BinarySearch(const int *arr, int count, const int &elem) {
int first = 0;
int last = count;
while(first < last) {
int mid = first + ((last - first) >> 1);
if(elem <= arr[mid]) {
last = mid;
}
else {
first = mid + 1;
}
}
return (first == count || arr[first] != elem) ? -1 : first;
}
int main() {
int a[] = {4,5};
std::cout << BinarySearch(a, 5, 5);
return 0;
}
Потратил 3 часа на поиск ошибки в программе (просто она работала правильно, но система тестирования не принимала, ибо там нормальный компилятор 4.7.2) из-за этой фигни, злой как собака... никакого доверия теперь к gcc и g++.