Em C / C # / etc., você pode dizer ao compilador que um número literal não é o que parece ser (ou seja, em float
vez de double
, em unsigned long
vez de int
:
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
etc.
Alguém poderia me indicar uma lista deles? Estou procurando especificamente um sufixo para short
or Int16
.
Respostas:
Eu acho que é tudo ... não há especificadores literais para short / ushort / byte / sbyte
fonte
byte b = 42;
)somebyte = (byte)(somebool ? 1 : 0);
1l
e1L
ambos serão tratados como um número inteiro longo, mas certamente1L
são mais legíveis que1l
.De §2.4.4.2 Literais inteiros :
E de §2.4.4.3 literais reais :
fonte
Se sua variável ainda não é curta, você deve convertê-la explicitamente:
fonte
Não há um para abreviar. Apenas use
short s = 1;
.fonte
short z1 = (0 == 1 ? 0 : 1);
mas isso não:short y = 1; short z2 = (0 == 1 ? 0 : y);
(desculpe, sem quebras de linha permitidos nos comentários)0
ramo if é convertido em umint
antes da atribuição paraz2
. Se você usar doisshort
s em seus ramos, o resultado será novamente ashort
. Com o if / else, o compilador não pode saber que vocêint
pode ser representado comoshort
.