diff --git a/zk/Numerical_data_types_in_C.md b/zk/Numerical_data_types_in_C.md new file mode 100644 index 0000000..7bc22ce --- /dev/null +++ b/zk/Numerical_data_types_in_C.md @@ -0,0 +1,55 @@ +--- +tags: + - C +--- + +# Numerical data types in C + +## Summary + +| Data type | Memory | Examples | +| --------------- | ------- | -------------- | +| `int` | 4 bytes | `0`, `-3`, `9` | +| `short int` | 2 bytes | `0`, `-3`, `9` | +| `long int` | 4 bytes | `0`, `-3`, `9` | +| `long long int` | 8 bytes | `0`, `-3`, `9` | +| `float` | 4 bytes | `2.1882` | +| `double` | 8 bytes | `2.18829801` | + +## `int` + +An `int` can hold a signed or unsigned value or 0 but it cannot hold a decimal +value. + +On most modern systems, an `int` typically allocates 4 bytes (32 bits) of +memory. This is not always the case however and some systems may allocate only 2 +bytes. + +$2^32 = 4294967296$ thus for signed ints this provides a range -2,147,483,648 to +2,147,483,647. For unsigned ints this provides a range 0 to 4,294,967,295. + +## `short int` + +The same properties of `int` but a smaller bit allocation - 2 bytes (16bits). + +$2^16 = 65536$ thus for signed short ints this provides a range -32,768 to +32,767. For unsigned short ints this provides a range 0 - 65, 536. + +## `long int` + +Basically the same as `int` but you are guarenteed 4 bytes, independent of +system. + +## `long long int` + +An extra-long `int` allocated 8 bytes (64bits). + +## `float` + +Use to hold decimal values. Allocated 4 bytes (32 bits) of memory. Holds less +precision than a `double` but uses less memory. + +## `double` + +Use to hold decimal values. Allocated 8 bytes (32 bits) of memory. Provides +greater precision than a `float` but uses more memory.