Явное интегральное или преобразование с плавающей точкой не должно увеличивать размер базового типа cvalue выражения
Явное интегральное или преобразование с плавающей точкой не должно увеличивать размер базового типа cvalue выражения.
Выражения, отмеченные этим средством проверки, следуют подробным спецификациям для cvalue выражений из документации MISRA® C ++.
Если вы выполняете выражение и позже бросаете результат к другому типу, бросок не имеет никакого эффекта на базовый тип оценки (самый широкий из типов данных операнда в выражении). Например, в этом примере, сумма двух операндов short
брошена к более широкому типу int
.
short op1; short op2; int res; res= static_cast<int> (op1 + op2);
int
из-за более позднего броска.Явное интегральное или преобразование с плавающей точкой не должно увеличивать размер базового типа cvalue выражения.
Сложным выражением базового типа, typeBeforeConversion
может только быть брошен к более узкому целочисленному типу того же самого со знаком, однако целевой тип, является typeAfterconversion
.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: Выражения |
Категория: необходимый |