MISRA C:2012 Rule 10.7

Если составное выражение используется в качестве одного операнда оператора, в котором выполняются обычные арифметические преобразования, то другой операнд не должен иметь более широкого существенного типа

Описание

Определение правила

Если составное выражение используется в качестве одного операнда оператора, в котором выполняются обычные арифметические преобразования, то другой операнд не должен иметь более широкого существенного типа.

Объяснение

Составное выражение является неконстантным выражением с использованием составного оператора. В модели Essential Type, композитные операторы:

  • Мультипликативный (*, /, %)

  • Добавка (двоичная +, двоичные -)

  • Побитовый (&, |, ^)

  • Сдвиг (<<, >>)

  • Условный (?, :)

Ограничение неявного преобразования составных выражений означает, что последовательности арифметических операций в выражениях должны использовать один и тот же существенный тип. Это ограничение уменьшает путаницу и избегает потери значения, знака, точности или размещения. Однако это правило не подразумевает, что все операнды в выражении имеют один и тот же существенный тип.

Для получения дополнительной информации о важных типах смотрите MISRA C:2012 Rule 10.1.

Дополнительное сообщение в отчете

  • Правый операнд не должен иметь более широкого существенного типа, чем левый операнд, который является составным выражением.

  • Левый операнд не должен иметь более широкого существенного типа, чем правый операнд, который является составным выражением.

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Проверяйте информацию

Группа: Модель Essential Type
Категория: Требуемая
Категория СМЖЛ: Консультационная