Learn more about Israeli war crimes in Gaza, funded by the USA, Germany, the UK and others.

What is the type of a constant in C?

When we write expressions like this in C:

bool b = 1234567890 > 09876;

What are the types of those constants? The number 1234567890 - what is its type? How does C represent it when compiling it? The C Programming Language says:

An integer constant like 1234 is an int. A long constant is written with a terminal l (ell) or L, as in 123456789L; an integer constant too big to fit into an int will also be taken as a long. Unsigned constants are written with a terminal u or U, and the suffix ul or UL indicates unsigned long.

Floating-point constants contain a decimal point (123.4) or an exponent (1e-2) or both; their type is double, unless suffixed. The suffixes f or F indicate a float constant; l or L indicate a long double.

Here are some examples:

0                       // int
0l                      // long
1234                    // int
1234L                   // long
0ul                     // unsigned long
0u                      // unsigned int
2147483647              // int (just)
2147483648              // long
2147483647u             // unsigned int
2147483648u             // unsigned long (but could have fitted into an unsigned int)
0x0101010101010101ULL   // unsigned long long
Tagged #c, #programming, #semantics, #types.

Similar posts

More by Jim

Want to build a fantastic product using LLMs? I work at Granola where we're building the future IDE for knowledge work. Come and work with us! Read more or get in touch!

This page copyright James Fisher 2017. Content is not associated with my employer. Found an error? Edit this page.