1234 'x' 9.89 "String"
Constants are used to assign a value to a variable. E.G
	int i;		/* declare a variable called 'i'	*/
	i=1234;		/* assign the constant value 1234 to 
			 * the variable 'i'			*/
        i++;		/* Change the value of the variable.	*/
Interger constants can be expressed in the following ways.
1234 (decimal) 0xff (Hexidecimal) 0100 (Octal) '\xf' (Hex character)
Examples of their use are:
	int i=255;	/* i assigned the decimal value of 255	*/
	i-=0xff		/* subtract 255 from i			*/
	i+=010		/* Add Octal 10 (decimal 8)		*/
			/* Print 15 - there are easier ways...	*/
	printf ("%i \n", '\xf'); 
Integer constants are assumed to have a datatype of int, if it will not fit into an 'int' the compiler will assume the constant is a long. You may also force the compiler to use 'long' by putting an 'L' on the end of the integer constant.
        1234L           /* Long int constant (4 bytes)          */
The other modifier is 'U' for Unsigned.
        1234U           /* Unsigned int                         */
and to complete the picture you can specify 'UL'
        1234UL          /* Unsigned long int                    */
Floating point constants contain a decimal point or exponent. By default they are double.
123.4 1e-2
Are actually integers.
'x' '\000' '\xhh' escape sequences
Strings do not have a datatype of their own. They are actually a sequence of char items terminated with a \0. A string can be accessed with a char pointer.
An example of a string would be:
char *Str = "String Constant";
See the discussion on strings for more information.
| Top | Master Index | Keywords | Functions | 
See also:
// uart.h 
struct UartRegisters {
        uint32_t CTRL;
        uint32_t STAT;
        uint32_t TX;
        uint32_t RX; 
}; 
 
#define UART_CTRL_EN 0x01
#define UART0_BASE 0x80000000
#define UART1_BASE 0x80001000
 
// usage:
// main.c 
struct UartRegisters *UartInst0;
 
int main(void)
{
        UartInst0 = (struct UartRegisters*) USRT0_BASE;
 
        UartInst0->CTRL |= UART_CTRL_EN;
        // ... 
}
  
      
/* turn a numeric literal into a hex constant
   (avoids problems with leading zeroes)
   8-bit constants max value 0x11111111, always fits in unsigned long
*/
#define HEX__(n) 0x##n##LU
/* 8-bit conversion function */
#define B8__(x) ((x&0x0000000FLU)?1:0) \
               +((x&0x000000F0LU)?2:0) \
               +((x&0x00000F00LU)?4:0) \
               +((x&0x0000F000LU)?8:0) \
               +((x&0x000F0000LU)?16:0) \
               +((x&0x00F00000LU)?32:0) \
               +((x&0x0F000000LU)?64:0) \
               +((x&0xF0000000LU)?128:0)
/* *** user macros *** /
/* for upto 8-bit binary constants */
#define B8(d) ((unsigned char)B8__(HEX__(d)))