Data Types in C

Notes on how to create variables and available data types in C

This is a compilation of the notes from week 1 of CS50. On the first week we start learning about C, we learn things such as Data Types, how to create variables and the void type.

Create variables

In C we need to specify the type of the variable and then give it a name. This is a piece of useful information to get out of the way straight away before diving deeper into the data types available.

  • int number;
  • char letter;

If you create multiple variables of the same type, you can specify the type and then the names of all the variables of those types.

  • int height, width;
  • float sqrt2, sqrt3, pi;

After you have declared the data type of the variable, you don't need to specify it again when assigning in values to that variable.

When creating a variable you can either declare a variable or initialize the variable. Seems, fancy but is just either declare the variable without assigning something to it or assigning a value to the variable.

1int number; // declaration
2int n = 17; // initialization


Is used to store integers, they will always take 4 bytes of memory (32 bits) - this means that the range of value that they can store if limited to 32 bits of information.

  • Range: −32,767 to +32,767
  • Format Specifier: %hd


Is used to store single characters, they will always take 1 byte of memory (8 bits) - this means the range of the value that can be store is limited to 8 bits of information.

ASCII developed a mapping of characters (A, B, C...) to numeric values in the positive side of the char range.

  • Range: -128 to 127
  • Format Specifier: %c


Is used to store floating-point values (real numbers), they will take up to 4 bytes of memory (32 bits). When using floats we are limited to how precise that number can be

  • Format Specifier: %f


Is used to store floating-point values, but use double-precision, they will take up to 8 bytes of memory (64 bits). It allows us to get more precise real numbers

  • Format Specifier: %lf


Unsigned isn't a data type but is a qualifier. It can double the positive range of a data type, at the cost of disallowing any negative values.

Example: If we have an unsigned int the range of that data type is: 0 to 65535 vs the regular int which is −32,767 to +32,76.

Also, note that the format specifier for unsigned data types will be different than "regular" ones.


This isn't a data type, but a type. Functions can have a void return type, which means they don't return a value. The parameter of a function can also be void, which means that the function takes no parameters.


0 Like 0 Comment

You might also like these