I'm just curious why I can't define a 256-bit or x-bit data type in C.
You can do that in any language by constructing something (ie. struct in c#) in that language that consists of multiple instances of primitive types that store the bits. For example if you want to create a 128-bit data type you'd create a struct holding
two 64-bit integers on x64 or 4 32-bit integers on x86 machine. You can see how it is done in C for a 256-bit integer with
4x 64-bit chunks and
8x 32-bit chunks.