[previous] 1880 [next] The operands of this relational operator are expressions of different 'essential type' categories (%1s and %2s).
Arithmetic type - Balancing

This message is issued when a relational operator is used with operands of different essential type categories.

For example:


/*PRQA S 1-9999 ++*/
/*PRQA S 1880, 1802, 1822, 4505 --*/

_Bool             boa;
char              pca;
enum E {ONE, TWO} ena;
enum F {UNO, DUE} enb;
int               sia;
unsigned          uia;
float             fta;

void f1880 (void)
{
  if (boa < pca) ;  /* 4505 */
  if (boa < ena) ;  /* 4505 */
  if (boa < sia) ;  /* 4505 */
  if (boa < uia) ;  /* 4505 */
  if (boa < fta) ;  /* 4505 */

  if (pca < ena) ;  /* 1880 */
  if (pca < sia) ;  /* 1880 */
  if (pca < uia) ;  /* 1880 */
  if (pca < fta) ;  /* 1880 */

  if (ena < enb) ;  /* 1880 */
  if (ena < sia) ;  /* 1880 */
  if (ena < uia) ;  /* 1880 */
  if (ena < fta) ;  /* 1802 */

  if (sia < uia) ;  /* 1822 */
  if (sia < fta) ;  /* 1802 */

  if (uia < fta) ;  /* 1802 */
}


MISRA-C:2004 Rules applicable to message 1880:

Rule  10.1  (Required) The value of an expression of integer type shall not be implicitly converted to a different underlying type if: a) it is not a conversion to a wider integer type of the same signedness, or b) the expression is complex, or c) the expression is not constant and is a function argument, or d) the expression is not constant and is a return expression
Rule  10.2  (Required) The value of an expression of floating type shall not be implicitly converted to a different type if: a) it is not a conversion to a wider floating type, or b) the expression is complex, or c) the expression is a function argument, or d) the expression is a return expression


See also:

QA·C Source Code Analyser 8.1
MISRA-C:2004 Compliance Module 3.2
© 2012 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index | MISRA-C:2004 Rule Index Contents