Everything is a number.

Truthy is just 1, falsy is just 0.

Numbers are expressed in positional systems, e.g. base-10. A system like this encodes a vector of bits, and associates this with a radix (some number >= 2).

The smallest unit is a bit. A byte is 8 bits. A character is 1 byte. Integers have 2 - 4 bytes.. Longer integers have 8.

You can have a sequence of these things - an array.

    char my_array[24];
    int my_other_array[3] = { 1, 2, 42};

You can have things that point to things,

    int x = 9;
    char *ptr = &x;

Sometimes, things hide in the background.

    #include <errno.h>

    int rc = foobar();
    if (rc != 0) {
      printf("er what? %s\n", strerror(errno));
    }

I am used to getting return values from functions, but apparently this is the norm...

    char box[16];
    int rc = foo(some_val, box);
    if (rc == 0) {
      // box now has values
    }

... more to come