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-suffix
es 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;
.