А чего бы правильно это не написать и все ок будет :-)
Сделать например через StringFormat ?
ну ли макросы сделать короткие для той же IntegerToString ?
что мешает сделать, что то типо
#define itos(x) IntegerToString(x)
А вообще когда однотипных данных с ошибками много хорошо выручает Ctrl+H
Не, не поможет, названия везде разные
#define itos(x) IntegerToString(x)
За это спасибо, не знал, я бы только так сделал
string itos(int x) { return IntegerToString(x); }
Теперь сделал так
#define is(x) IntegerToString(x) #define s string st = "text" + is(i); st = "text" + (s)i;
Код с варнингами - плохой код. Когда работал программистом, нас за выкладывание такого кода на сервер лишали премии. Потому что варнинги часто сигнализируют о скрытой ошибке. И я в этом многократно убеждался.
Код с варнингами - плохой код. Когда работал программистом, нас за выкладывание такого кода на сервер лишали премии. Потому что варнинги часто сигнализируют о скрытой ошибке. И я в этом многократно убеждался.
Правильно делали.
Код должен компилироваться без единого варнинга.
Функции преобразования значений в строки - очень полезные и нужные функции, не страшно, что строка становится длиннее. Зато мы точно знаем, в каком месте происходит конвертация.
Меня удивляет народ, который мало того, что выключает директиву strict, так еще и не обращает внимания на варнинги.
Варнинг варнингу рознь. В рассматриваемой ситуации необходимость варнинга довольно спорна. К примеру C#, известный своей педантичной строгостью, не выдаёт никаких варнингов в данном случае.
Ну и, по-моему, это плохо. Совершенно ясно, что требуется перевод числовых данных в строковые, соответственно, в тексте программы
такой код должен быть. А если его нет - должно быть предупреждение.
Ну и, по-моему, это плохо. Совершенно ясно, что требуется перевод числовых данных в строковые, соответственно, в тексте
программы такой код должен быть. А если его нет - должно быть предупреждение.
Что плохого? Ну предупредил он меня и что от этого изменится, компилятор же сам преобразовал в стринг и предупредил (неявное преобразование из «числа» в «строку»), я на это и рассчитывал, что он его сам преобразует, зачем мне дополнительный код писать для этого
И если это плохо, что будет если я сам тип инт в стринг не переведу?
Можно также варнингами журнал засыпать, что вы не указали не обязательные параметры в функции, надо все указывать а то мало ли чего! :) ни чего не будет, но это плохо!
Ну и, по-моему, это плохо. Совершенно ясно, что требуется перевод числовых данных в строковые, соответственно, в тексте программы такой код должен быть. А если его нет - должно быть предупреждение.
Смысл предупреждений в том, чтобы сигнализировать о потенциальной ошибке. В чём же здесь потенциальная ошибка? Если бы человек вместо конкатенации строк хотел просуммировать два числа, то результат выражения тоже бы присваивался числовой переменной, а не строковой. Но у него стринг. Выходит что он и тут ошибся? Т.е. компилятор его предупреждает о том, что он вероятно ДВАЖДЫ мог ошибиться? Не кажется ли это чрезмерным?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Предупреждение на строке st = "text" + i; ну оно и понятно
В примере все просто, но в реальных проектах строки собираются гораздо сложней и раздувать строку в два, а то и три раза больше по размеру из-за указания везде преобразования int в string, совсем не хочется.
Я понимаю с другими типами данных, но с int он и в африке инт, когда вываливается таких 600 штук и что бы найти сообщение об ошибке, надо прокручивать этот список постоянно, достает.
А втыкать везде (string), IntegerToString(), хуже код читается
Как то можно этим предупреждения отключить?
StringConcatenate() не удобно использовать