| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Code::Blocks и приведение char к int |
| Автор: NYX 28.12.2009, 23:30 |
| Здравствуйте товарисчи! Оч спецфчскй вопрос возник. Не так давно по обстоятельствам пришлось заюзать компилятор Code::Blocks Я знаю что есть приведение типов а есть такие ситуации когда приведение типов вовсе не обязательны. Например if (int_a == char_b) // то есть если переменная a лежит в диапазоне 256 и она сравнивается с символьным типом, то либо true либо false. Если конкретнее, у меня места в коде, когда надо определить используемые диапазоны значений входящих массивов символьного типа. Ну как бы делаю это очень просто if (charSymbol >= 47) // значит вероятно это цифры. Но компилятор спокойно на стадии сборки сообщает следующее: Компаринг int и char всегда будет возвращать 1 |
| Автор: comcon1 29.12.2009, 00:49 | ||||
Проверил GCC вот таким кодом:
Подставлял разные буквы:
Ни ругани, ни аномального поведения. Да и за третьим не замечал такого. Добавлено через 4 минуты и 10 секунд Подожди, сомнение закралось в меня и я почитал про C::B. Code::Blocks - это же не компилятор, это IDE! Ты напиши, какой у тебя компилятор-то. |
| Автор: mes 29.12.2009, 01:09 |
| NYX, для начала покажите реальный кусок кода, на который ругается компилятор и его ругань. |
| Автор: NYX 29.12.2009, 01:14 | ||
| эммм Multiple compiler support: GCC (MingW / GNU GCC) MSVC++ Digital Mars Borland C++ 5.5 Open Watcom ...and more mingw стало быть Странно, почему то этого не происходит больше, теперь все работает и не могу понять каким образом вот фрагментец:
Это как бы то, на что раньше компилятор матерился... точнее как матерился, он запускался, но результатом работы всегда было true |
| Автор: comcon1 29.12.2009, 02:45 | ||||
Нашел вот такой чпок:
Очисть объектные файлы и собери снова. И версию GCC назови заодно. Добавлено через 3 минуты и 2 секунды И кстати, я не пойму, нахрена тебе второй цикл, если можно просто:
|
| Автор: NYX 29.12.2009, 03:47 |
| Да не циклы это я как бы для проверки вставил Да а сообщение один в один как у меня было! |
| Автор: bsa 29.12.2009, 11:36 |
| Конечно, а почему должно быть другое? Тут просто смысл в том, что компилятор предупреждает когда видит конструкции if (uint_x < 0) или if (uint_x >= 0)... Тут же понятно, что unsigned всегда будет больше либо равен нулю. |