Always check your return code.
Comment your code appropriately for future use.
Take performance and efficiency into consideration (loops, etc.).
Modularize your code.
Test your code extensively using 'normal' values and 'extreme' values (positive, negative, etc.).
Your code should not dump or terminate unexpectedly.
Establish and follow corporate standards when writing your code (what is global, local, etc.).
Maintain your code with the assumption that others will need to make sense of it in the future.
Cleanse your code of old, unused functions and variables.
Always define variables to match their required space usage, and free them when no longer needed.
+ Addition - Adds values on either side of the operator.  10 + 20 will give 30.
- Subtraction - Subtracts right hand operand from left hand operand.  10 - 20 will give -10.
* Multiplication - Multiplies values on either side of the operator.  10 * 20 will give 200.
/ Division - Divides left hand operand by right hand operand.  20 / 10 will give 2.
% Modulus - Divides left hand operand by right hand operand and returns remainder.  20 % 10 will give 0.
++ Increment - Increase the value of operand by 1.  10++ gives 11.
-- Decrement - Decrease the value of operand by 1.  10-- gives 9.
== Checks if the value of two operands are equal or not, if yes then condition becomes true. (10 == 20) is not true.
!= Checks if the value of two operands are equal or not, if values are not equal then condition becomes true.  (10 != 20) is true.
> Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true. (10 > 20) is not true.
< Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true. (10 < 20) is true.
>= Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true. (10 >= 20) is not true.
<= Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true. (10 <= 20) is true. 
&&&& Logical AND operator. If both the operands are non zero then then condition becomes true. (0 &&&& 1) is false.
|| Logical OR Operator. If any of the two operands are non zero then then condition becomes true.  (0 || 1) is true.
! Logical NOT Operator. Use to reverses the logical state of its operand. If a condition is true then Logical NOT operator will make false. !(0 &&&& 1) is true. 
AND - This operation is performed between two bits, which we will call a and b. The result of applying this AND operation is 1 if both a and b are equal to 1, and 0 in all other cases (i.e., if one or both of the variables is 0).
OR - This operation is performed between two bits (a and b). The result is 1 if either one of the two bits is 1, or if both are 1. If none is equal to 1 the result is 0.
XOR (Exclusive Or) - This operation is performed between two bits (a and b). The result is 1 if either one of the two bits is 1, but not in the case that both are. There for, if neither or both of them are equal to 1 the result is 0.
NOT - This operation is performed on a single bit. Its result is the inversion of the actual value of the bit: if it was set to 1 it becomes 0, and if it was 0 it becomes 1.
= Simple assignment operator.  Assigns values from right side operands to left side operand.  C = A + B will assigne value of A + B into C.
+= Add AND assignment operator.  It adds right operand to the left operand and assign the result to left operand.  C += A is equivalent to C = C + A.
-= Subtract AND assignment operator.  It subtracts right operand from the left operand and assign the result to left operand.  C -= A is equivalent to C = C - A.
*= Multiply AND assignment operator.  It multiplies right operand with the left operand and assign the result to left operand.  C *= A is equivalent to C = C * A.
/= Divide AND assignment operator.  It divides left operand with the right operand and assign the result to left operand.  C /= A is equivalent to C = C / A.
%= Modulus AND assignment operator.  It takes modulus using two operands and assign the result to left operand.  C %= A is equivalent to C = C % A.
<<= Left shift AND assignment operator.  C <<= 2 is same as C = C << 2.
>>= Right shift AND assignment operator.  C >>= 2 is same as C = C >> 2.
&&= Bitwise AND assignment operator.  C &&= 2 is the same as C = C && 2.
^= Bitwise exclusive OR and assignment operator.  C ^= 2 is same as C = C ^ 2.
|= Bitwise inclusive OR and assignment operator.  C |= 2 is same as C = C | 2.
Byte: Byte data type is an 8-bit signed two's complement integer.
Byte data type is used to save space in large arrays, mainly in place of integers, since a byte is four times smaller than an int.
Short: Short data type is a 16-bit signed two's complement integer. 
Short data type can also be used to save memory as byte data type. A short is 2 times smaller than an int.
Two's complement: Represents negative numbers in binary. Each bit of the number is inverted (zeros are replaced with ones and vice versa), as for ones complement, but then one (000...0001) is added (ignoring overflow).
Int: Int data type is a 32-bit signed two's complement integer.
Int is generally used as the default data type for integral values unless there is a concern about memory.
Long: Long data type is a 64-bit signed two's complement integer. 
Long type is used when a wider range than int is needed.
Float: Float data type is a single-precision 32-bit IEEE 754 floating point. 
Float data type is never used for precise values such as currency.
Double: Double data type is a double-precision 64-bit IEEE 754 floating point.
Double is generally used as the default data type for decimal values, generally the default choice. 
Boolean: Boolean data type represents one bit of information.
There are only two possible boolean values: true and false.
Char: Char data type is a single 16-bit Unicode character.
Char data type is used to store any character.
C++ escape sequence: \'    single quote    byte 0x27
C++ escape sequence: \"    double quote    byte 0x22
C++ escape sequence: \?    question mark    byte 0x3f
C++ escape sequence: \\    backslash    byte 0x5c
C++ escape sequence: \0    null character    byte 0x00
C++ escape sequence: \a    audible bell    byte 0x07
C++ escape sequence: \b    backspace    byte 0x08
C++ escape sequence: \f    form feed - new page    byte 0x0c
C++ escape sequence: \n    line feed - new line    byte 0x0a
C++ escape sequence: \r    carriage return    byte 0x0d
C++ escape sequence: \t    horizontal tab    byte 0x09
C++ escape sequence: \v    vertical tab    byte 0x0b
C++ escape sequence: \nnn    arbitrary octal value    byte nnn
C++ escape sequence: \xnn    arbitrary hexadecimal value    byte nn
C++ escape sequence: \unnnn    arbitrary Unicode value.  May result in several characters.  Code point U+nnnn.
C++ escape sequence: \Unnnnnnnn    arbitrary Unicode value.  May result in several characters.  Code point U+nnnnnnnn.
You can add/change these tips by loading the "tips.txt" in your text editor (Notepad, etc.).  This file should be in your dmHexCards folder.
