Reserved C(bold)/C++ Key Words
  
asm  auto  bool  break  case  catch  char  class  const  const_cast
continue  default  delete  do  double  dynamic_cast  else  enum  extern  false  float  for  friend  goto  if  inline  int  long  mutable  namespace  new  operator  private  protected  public  register  reinterpret_cast  return  short  signed  sizeof  static  static_cast  struct  switch  template  this  throw  true  try  typedef  typeid  union  unsigned  virtual  void  volatile  wchar_t  while
  
The maximum length of a variable name: 31 characters.
C Data Types
  
| Key word | Bytes | Range | 
| char | 1 | -128 ~ 127 | 
| int | 2( or 4) | -32768 ~ 32767 | 
| short | 2( or 4) | -32768 ~ 32767 | 
| long | 4 | -2147483648 ~ 2147483647 | 
| unsigned char | 1 | 0 ~ 255 | 
| unsigned int | 2( or 4) | 0 ~ 65535 | 
| unsigned short | 2( or 4) | 0 ~ 65535 | 
| unsigned long | 4 | 0 ~ 4294967295 | 
| float | 4 | 1.2E-38 ~ 3.4E38 | 
| double | 8 | 2.2E-308 ~ 1.8E308 | 
Operator Precedence
  
| Arithmetic Operator | Relative Precedence | 
| ++ -- | 1 | 
| * / % | 2 | 
| + - | 3 | 
| Relational Operator | Relative Precedence | 
| < <= > >= | 1 | 
| != == | 2 | 
printf conversion specifiers
    
  
| Specifier | Meaning | Conversion Type | 
| %c | single character | char | 
| %d | signed decimal integer | int, short | 
| %ld | signed long decimal integer | long | 
| %f | decimal floating-point number | float, double (eg: %.2f -> 32.00) | 
| %s | character string | char array | 
| %u | unsigned decimal integer | unsigned int, unsigned short | 
| %lu | unsigned long decimal integer | unsigned long | 
| %x %X | unsigned hexadecimal | (x:lowercase, X:uppercase) | 
| %o | unsigned octal notation | / | 
| %% | Displays '%' character itself. | / | 
| %* | 
      Specifies field width. eg) printf("%*d", 0x0a, value); << The value is printed in field width 0x0a.  | 
    / | 
| %e %E | 
      Scientific notation of float or double.
      If no specific precision specifier has been specified
      with F,
      it presents maximum 6 digits
      on the right of the floating point. eg) 12.3 is presented as 1.230000e + 001  | 
    float, double(lowercase/uppercase) | 
      
  | 
  ||
printf conversion flag following '%' modifier
  
| Flag | Meaning | 
| - | Field output in left-alignment. | 
| + | Preface numbers with '+' or '-' sign. | 
| ' ' | Insert a space before a number. | 
| # | Applicable only to 'x', 'X' and 'o'. Preface a number that is not zero with '0x' or '0X' or '0' respectively. | 
Initializing multi-dimensional arrays
int array[2][3] = {1, 2, 3, 4, 5, 6};
is the same as the following:
int array[2][3] = {{1, 2, 3}, {4, 5, 6}};
Suspending operations for specified seconds
    #include <time.h>
    void sleep(int iseconds)
    {
        clock_t duration;
        duration = (iseconds * CLOCKS_PER_SEC) + clock();
        while(duration > colck()) ;
    }
struct definition/declaration/initialization and ...
    struct mystruct
    {
        int a;
        int b;
    } one, two;
    struct mystruct
    {
        int a;
        int b;
    } one = {3, 32};
    struct shozi
    {
        struct mystruct numbers;
        char hiraizumi[0x20];
        char kanoya[0x30];
        char rumoi[0x30];
        int value;
        float total;
    } one = {
                {0x04, 0x07},
                "Hiraizumi",
                "Kanoya",
                "Rumoi",
                235,
                6344.323
            };
union common
{
    char c;
    int i;
    float f;
    long L;
};
union common uione = {'A'};
    << Union: initializing only the first member is enough as shown above.
    typedef union _common
    {
        char c;
        int i;
        float f;
        long L;
    } common;
    common uione, uitwo;
    << Using typedef so as not to use union keyword for union variable declarations.
Sample Illustration
Multiple Indirection : 
    int n = 0x0a;
    int *pi = &n;
    int **ppi = π
    **ppi = 0xff;//Makes sense
Other
    int multi[0x03][0x04] = {
        {0x01, 0x02, 0x03, 0x04},
        {0x05, 0x06, 0x07, 0x08},
        {0x09, 0x0a, 0x0b, 0x0c}
    };
    // three lines and four columns.
    // multi and multi[index] is a pointer.
    int a = sizeof(multi);
    int b = sizeof(multi[0x00]);
    int c = sizeof(multi[0x00][0x00]);
    // c is the size of int, ie, 4 or 2.
    // b is the size of c * 0x04, ie 16 or 8.
    // a is the size of c * b, ie 64 or 16.
    int (*pi)[0x04];
    // A pointer that can point to an element of multi.
    int *pis[0x04];
    // An array of four int pointers
    // each of which can point to an int variable respectively.
    pi = multi;// Makes sense.
    pis = multi;// Wrong indirection;
    #include <math.h>
    double ceil(double x);
    ceil(4.5) returns 5.0
    ceil(-4.5) returns -4.0
    double floor(double x);
    floor(4.5) returns 4.0
    floor(-4.5) returns -5.0
Dont list
  - Do not put extended ASCII character value in signed char variable.
 - Avoid defining bit fields of eight or sixteen bits in size. (the same size as char or short type)
 
Mind list
  - Character sets supported by computer systems may vary
      but most have the same character values
      in the range from zero to one hundred twenty seven.
 - Bit field members must precede non-bit field members in struct definition.
      
struct mystruct { unsigned tagged:0x01; unsigned bogged:0x01; char name[0x20]; char street[0x50]; }; 
Just O-shi-ra-se.
  - EOF is defined as -0x01 in stdio.h.
 
No comments:
Post a Comment