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)))