MISRA C:2012 Rule 10.7

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

Описание

Примечание

Используйте Bug Finder вместо Code Prover для проверки правил кодирования. Поддержка кодирования правил, регистрируясь в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.

Управляйте определением

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

Объяснение

Составное выражение является непостоянным выражением с помощью составного оператора. В Существенной Модели Типа составные операторы:

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

  • Дополнение (бинарный +двоичный файл-)

  • Поразрядно (&, |, ^)

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

  • Условное выражение (?, :)

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

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

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

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

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

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

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

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

Группа: существенная модель типа
Категория: необходимый
Категория AGC: консультация

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2021b