Когда требуется цифра c суффикс L (длинный)? - PullRequest
3 голосов
/ 30 апреля 2020

Я знаю, что что-то вроде 1.5 является двойным, поэтому вам нужно использовать суффикс m, чтобы присвоить ему десятичное число.

decimal d = 1.5; // won't compile
decimal d = 1.5m; // will compile

Теперь, литерал, такой как 0, инт. Но почему я могу просто назначить это долго? Есть ли разница между присвоением 0 против 0L переменной типа long?

long l = 0;
long l = 0L;

1 Ответ

3 голосов
/ 30 апреля 2020

Но почему я могу просто назначить его на long?

11.2.3 из spe c заявляет:

Implicit numeric conversions
The implicit numeric conversions are:
•   From sbyte to short, int, long, float, double, or decimal.
•   From byte to short, ushort, int, uint, long, ulong, float, double, or decimal.
•   From short to int, long, float, double, or decimal.
•   From ushort to int, uint, long, ulong, float, double, or decimal.
•   From int to long, float, double, or decimal.
•   From uint to long, ulong, float, double, or decimal.
•   From long to float, double, or decimal.
•   From ulong to float, double, or decimal.
•   From char to ushort, int, uint, long, ulong, float, double, or decimal.
•   From float to double.
Conversions from int, uint, long, or ulong to float and from long or ulong to double may cause a loss of precision, but will never cause a loss of magnitude. The other implicit numeric conversions never lose any information.

From int to long, float, double, or decimal. является уместным здесь. По умолчанию 0 равно int, поэтому его можно неявно преобразовать в long.

Есть ли разница между присвоением 0 и 0L переменной типа long?

Они будут вести себя точно так же. ИЛ точно такой же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...