Narrowing conversation from int to signed char, но никакого преобразования нет
Начал писать такой вот метод:
char getDigitInRadix(char d, int radix) {
if (d < 10)
return d + (char)48;
}
Clion подсвечивает d и выдаёт предупреждение: Clang-Tidy: Narrowing conversion from 'int' to signed type 'char' is implementation-defined, хотя никакого преобразования тут нет: d имеет тип char, он складывается с выражением типа char, функция в результате возвращает выражение типа char.
Ответы (1 шт):
Автор решения: user7860670
→ Ссылка
По неизвестным причинам С++ не поддерживает арифметические операции для целочисленных типов меньше int. В выражении return d + (char)48; каждый операнд сначала преобразуется в int, а затем результирующий int преобразуется в char.
А еще если условие не выполняется, то будет неопределенное поведение, так как отсутствует return.