Essential rank of variabls and constants

Moderators: misra-c, david ward

Post Reply
sca2012
Posts: 4
Joined: Thu Mar 20, 2014 2:50 pm
Company: Klocwork

Essential rank of variabls and constants

Post by sca2012 » Thu Nov 20, 2014 6:47 pm

According p.8.10.2 and Appendix D, there are 5 ranks for signed and unsigned types for variables, defined, presumably, by their standard types. In particular, standard types int, long and long long are considered to have all different ranks.

According to p. D.3, for a constant, rank of its essential type is determined by its value. Now assume there is a (signed) constant that requires, say, 32 bits to represent the value. Is its rank the same as that of a signed int or signed long variable? And, correspondingly, for a 64-bit constant, will its rank be the same as that of signed long or signed long long variable?

Thank you.

misra-c
Posts: 566
Joined: Thu Jan 05, 2006 1:11 pm

Re: Essential rank of variabls and constants

Post by misra-c » Fri Dec 05, 2014 9:19 am

The following examples assumes the following type ranges:
  • char - 8 bits
    short - 16 bits
    int - 32 bits
    long - 64 bits
and that the constants are written in decimal form with no suffices.

Code: Select all

| Constant value range                     | Essential Type
| -2**7 .. 2**7-1                          | essentially signed char  |
| -2**15 .. -2**7-1  and  2**7 .. 2**15-1  | essentially signed short |
| -2**31 .. -2**15-1 and 2**15 .. 2**31-1  | essentially signed int   |
| -2**63 .. -2**31-1 and 2**31 .. 2**63-1  | essentially signed long  |
So for example 2147483647 (2**31-1) will have an essential type of essentially signed int, but 2147483648 (2**31) will have an essential type of essentially signed long.

2**X is used to represent 2 to the power X
---
Posted by and on behalf of
the MISRA C Working Group

Post Reply

Return to “8.10 The essential type model”