PQ PRECISO COLOCAR L em um NUMERO LONG NO C#

 Tópico anterior Próximo tópico Novo tópico

PQ PRECISO COLOCAR L em um NUMERO LONG NO C#

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#488769 - 07/05/2019 09:55:51

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 07/05/2019 10:11:30 por JCM0867

Pessoal, nunca entendi isso
se coloco no c#:

long meuNumero;
meuNumero = 123456789L;

Diz em manuais que o L é para não identificar como int, mas já não defini como long?
parece que tenho que definir como long duas vezes.
O mesmo para Valores Float e Decimal (F e M respectivamente)

Alguém me explica isso?




#488770 - 07/05/2019 09:59:24

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe

Última edição em 07/05/2019 09:59:40 por KERPLUNK

Não é obrigatório, Isso é na verdade um cast.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#488772 - 07/05/2019 10:31:53

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 07/05/2019 10:42:41 por JCM0867

Se eu tirar dá erro, diz para colocar sufixo M, L ou F
o L até aceita sem, mas não aceita sem M e F




#488775 - 07/05/2019 11:12:14

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Como eu disse, é um cast. É um modo de manter a tipagem.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#488779 - 07/05/2019 14:57:42

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 07/05/2019 15:00:15 por JABA

Fiz o teste aqui e não gerou erro algum.

using System;
                    
public class Program
{
    public static void Main()
    {        
        long l;
        
        l = 123456789;
        
        Console.WriteLine(l);
    }
}

dotnetfiddle.net/Widget/0Q7aD8


_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#488784 - 07/05/2019 17:59:10

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 07/05/2019 18:19:45 por JCM0867

Jaba, O long até funciona sem o L
Faça estes sem os sufixos:

decimal meuNumero;
meuNumero = 12345.3M;

float meuNumero;
meuNumero = 12345.3F;

Não me importo em por, só queria entender o pq se a tipo da variável já foi definida.
Ok, manter a tipagem. mas qdo digo decimal meuNumero já não está sendo tipada? diferente do Var do Javascript




#488785 - 07/05/2019 18:21:37

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Veja bem:
Veja o número 5534. Que tipo ele se enquadra? Vários. Integer, long, decimal... então para atribuir é preciso especificar que o tipo que está sendo atribuído é do mesmo da variável, em outras palavras, um cast.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#488788 - 07/05/2019 18:40:10

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


É raro alguém querer mudar o tipo de uma variável, até nunca vi. Isso pode acabar virando um salada na depuração, hora é int, hora é decimal, hora é float.
Ou estou errado?



Resposta escolhida #488789 - 07/05/2019 19:47:32

OCELOT
SOROCABA
Cadast. em:Março/2012


Primeiro de tudo, isso não é um cast pois não é feito nenhuma conversão.

long meuNumero;
meuNumero = 123456789L;


Primeiro tem que entender que neste código o meuNumero é a variável, o 123456789L é um valor que neste caso está sendo atribuído a variável, ele não está na variável, ele é apenas um valor constante que está direto no código, este tipo de valor é chamado de literal numérica.

A variável em si tem um tipo, no caso long, mas e o número constante que está no código, qual é o tipo dele? O compilador vai seguir algumas regras pra definir este tipo, por padrão números vão ser inteiros, a menos que não caibam em um inteiro, então ele passa a ser long, e por isso e também pelo fato de um inteiro poder ser convertido implicitamente para long é que geralmente não precisa do sufixo L, na verdade não sei dizer nenhum caso específico que ele seria necessário.

Agora números com casas decimais por padrão são do tipo double, por isso dá erro se você tenta atribuir ele direto para uma variável float ou decimal pois não existe conversão implícita para estes tipos, agora se você adiciona o sufixo f ou o m o compilador vai entender que esta constante é um float ou decimal respectivamente, gerando no código direto o valor neste tipo, logo não existe conversão.



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JCM0867 em 09/05/2019 08:39:55