Skip to main content

IAR Embedded Workbench for RH850 3.20.x

MISRAC2004-6.1

In this section:
Synopsis

(Required) The plain char type shall be used only for the storage and use of character values.

Enabled by default

Yes

Severity/Certainty

Low/High

lowhigh.png
Full description

Arithmetic is performed on objects of type plain char, without an explicit signed or unsigned qualifier. This check is identical to MISRAC++2008-4-5-3.

Coding standards
CERT INT07-C

Use only explicitly signed or unsigned char type for numeric values

MISRA C:2004 6.1

(Required) The plain char type shall be used only for the storage and use of character values.

MISRA C++ 2008 4-5-3

(Required) Expressions with type (plain) char and wchar_t shall not be used as operands to built-in operators other than the assignment operator =, the equality operators == and !=, and the unary & operator.

Code examples

The following code example fails the check and will give a warning:

typedef signed char INT8;
typedef unsigned char UINT8;

UINT8 toascii(INT8 c)
{
  return (UINT8)c & 0x7f;
}

int func(int x)
{
  char sc = 4;
  char *scp = ≻
  UINT8 (*fp)(INT8 c) = &toascii;
    
  x = x + sc;
  x *= *scp;
  return (*fp)(x);
}

The following code example passes the check and will not give a warning about this issue:

typedef signed char INT8;
typedef unsigned char UINT8;

UINT8 toascii(INT8 c)
{
  return (UINT8)c & 0x7f;
}

int func(int x)
{
  signed char sc = 4;
  signed char *scp = ≻
  UINT8 (*fp)(INT8 c) = &toascii;
    
  x = x + sc;
  x *= *scp;
  return (*fp)(x);
}