Letter after a number, what is it called?

This

double  d1 = 0d;

is an example of a literal and the character after the digits is a suffix. There is not one for short. You need to cast:

short s = (short)0;

These are defined in 2.4.4 of the language specification, specifically 2.4.4.2 will tell you about integer literals where you will see that there is no way to express a short using a literal. Additionally, the integer-type-suffixes are:

U  u  L  l  UL  Ul  uL  ul  LU  Lu  lU  lu

which represent various signed/unsigned int/long types. Again, no way to express a short using literal.


It is called a suffix.
An overview can be found here


The best source is the C# specification, specifically section Literals.

The relevant bits:

The type of an integer literal is determined as follows:

  • If the literal has no suffix, it has the first of these types in which its value can be represented: int, uint, long, ulong.
  • If the literal is suffixed by U or u, it has the first of these types in which its value can be represented: uint, ulong.
  • If the literal is suffixed by L or l, it has the first of these types in which its value can be represented: long, ulong.
  • If the literal is suffixed by UL, Ul, uL, ul, LU, Lu, lU, or lu, it is of type ulong.

If no real_type_suffix is specified, the type of the real literal is double. Otherwise, the real type suffix determines the type of the real literal, as follows:

  • A real literal suffixed by F or f is of type float. […]

  • A real literal suffixed by D or d is of type double. […]

  • A real literal suffixed by M or m is of type decimal. […]

That means the letter (or letters) is called “suffix”. There is no way to represent short this way, so you have to use (short)0, or just short x = 0;.