CodeGym /Cursos /C# SELF /Números e caracteres em C#

Números e caracteres em C#

C# SELF
Nível 6 , Lição 1
Disponível

1. Quais tipos de números existem?

Na programação a gente tá sempre lidando com números — desde a idade do usuário até o número de estrelas na galáxia ou centavos na conta do banco. Mas cada situação pede um tipo diferente de número: às vezes só precisa guardar inteiros, às vezes frações bem precisas, e às vezes só números "sem sinal de menos".

Números inteiros (int e outros)

Número inteiro — é aquele sem parte decimal.
Em C# o tipo mais usado é o int, mas tem outros também, que mudam de tamanho e de faixa de valores.

  • int — é o tipo "padrão" pra inteiros. Cabe valor bem grande (ou pequeno) e não ocupa tanta memória.
    Por exemplo, pra contar likes, idade, quantidade de dias no ano, quase sempre vai de int.
  • long — usa quando os valores podem ser gigantes (tipo bilhões ou trilhões).
    Exemplo: guardar o total de views do YouTube na história.
  • short — é econômico, mas pouco usado. Serve quando tem muitos valores pequenos iguais (tipo dados de áudio, componentes de cor).
  • byte — pra valores ainda menores, muito usado em gráficos e arquivos, onde economizar memória é importante.

Números fracionários (double, float, decimal)

Às vezes tu precisa trabalhar com números que têm parte decimal. Tipo temperatura, média do aluno, preço com centavos.

  • double — é o tipo "default" pra guardar números fracionários. Preciso o suficiente pra maioria dos cálculos (exemplo: 3.1415926535…).
  • float — mais leve e menos preciso, aparece mais em gráficos ou quando tem que processar muitos dados e economizar memória.
  • decimal — feito pra contas financeiras, quando precisa precisão até os centavos, pra não "perder" nada por causa do jeito que o computador guarda frações. Tipo pra saldo, preço de produto, câmbio.

Tipos numéricos especiais

Em C# tem uns tipos numéricos extras pra casos especiais:

  • uint, ulong, ushort — tipos "sem sinal", só aceitam valores positivos, mas a faixa é o dobro dos equivalentes "com sinal".
  • sbyte — pequeno, com sinal (pra guardar valores negativos e positivos de -128 até 127).
  • BigInteger — quando tu precisa lidar com números enormes, maiores que os tipos padrão, tipo em criptografia ou cálculos astronômicos.

2. Números com e sem sinal

Tipo com sinal pode guardar tanto número positivo quanto negativo. Isso é útil quando o valor pode ser "pra cima ou pra baixo de zero": tipo temperatura, saldo, altura em relação ao mar.

Tipo sem sinal — só zero e positivos. Serve quando não faz sentido ter negativo — tipo quantidade de pessoas na sala, bytes num arquivo, tempo.

Exemplo:

  • int (com sinal): -10, 0, 50
  • uint (sem sinal): 0, 10, 1000

Usando tipo sem sinal, tu consegue guardar o dobro do valor máximo (já que não tem "metade negativa"). Usa quando tem certeza que não vai ter valor negativo.

Tipos inteiros com sinal

Tipo Tamanho Faixa de valores Exemplo de uso
sbyte
1 byte -128 até 127 -128, 0, 127
short
2 bytes -32 768 até 32 767 -1000, 0, 32000
int
4 bytes -2 147 483 648 até 2 147 483 647 -1000000, 0, 2000000
long
8 bytes -9 223 372 036 854 775 808
até 9 223 372 036 854 775 807
-10_000_000_000, 1

Tipos inteiros sem sinal

Tipo Tamanho Faixa de valores Exemplo de uso
byte
1 byte 0 até 255 0, 128, 255
ushort
2 bytes 0 até 65 535 1000, 65000
uint
4 bytes 0 até 4 294 967 295 100, 4000000000
ulong
8 bytes 0 até 18 446 744 073 709 551 615 1, 18_000_000_000_000

Tipos fracionários

Tipo Tamanho Exemplo de valores Descrição
float
4 bytes 3.14f, -0.001f precisão simples (7 dígitos)
double
8 bytes 3.1415, -1.7E+308 precisão dupla (15-16 dígitos)
decimal
16 bytes 0.1m, 12345.6789m alta precisão pra grana

3. Sufixos pra números

Às vezes tu precisa dizer explicitamente qual tipo tu quer usar pro número. Isso se faz usando sufixos:

  • L ou l — pro tipo long (tipo 10000000000L)
  • U ou u — pro tipo uint (tipo 123U)
  • F ou f — pro tipo float (tipo 3.14f)
  • D ou d — pro tipo double (normalmente não precisa, porque número fracionário sem sufixo já é double)
  • M ou m — pro tipo decimal (tipo 99.99m — super importante pra dinheiro!)

Se não colocar sufixo, inteiro é int por padrão, e fracionário é double. Por exemplo, 42 é int, e 3.14 é double.

Pra que serve isso? Por exemplo, pra não dar erro quando tu tenta guardar um número grande numa variável long:


long bigNumber = 9000000000L; // se tirar o L, vai dar erro de compilação

E pra dinheiro, sempre usa decimal com sufixo m:


decimal price = 999.99m;

4. Separador underline _

Quando o número é grandão, é fácil se perder nos zeros. Pra deixar mais bonito e fácil de ler, em C# tu pode usar underlines dentro do número.


int population = 146_700_000;
long stars = 100_000_000_000L;
Usando underlines pra facilitar a leitura dos números

Isso é totalmente válido: o compilador ignora os underlines, e tu já vê os grupos de zeros de cara. Só não pode colocar underline no começo, no fim, depois do ponto ou antes do sufixo.

5. Tipo caractere char

Às vezes o programa precisa lidar não com números, mas com caracteres: letra, número, símbolo, até espaço. Pra isso tem o tipo especial — char.

O que é char?
É uma variável que guarda um caractere só:

  • letra latina ou cirílica ('A', 'я')
  • número ('5')
  • símbolo especial ('#', '%', '@')
  • caractere de controle ('\\n' — quebra de linha)

Detalhes:

  • O valor do tipo char vai entre aspas simples: char letter = 'B';
  • Na real, dentro do char fica o código numérico do caractere (em Unicode), então tu pode comparar, converter pra int e até fazer umas contas simples:

char a = 'A';
char b = (char)(a + 1); // 'B'
int code = a;           // 65 — código da letra 'A'

Dá pra usar caracteres especiais, tipo: char tab = '\\t'; // caractere de tabulação

Pra que serve o char?
Pra trabalhar com texto caractere por caractere (tipo checar a primeira letra de uma string, procurar pontuação, ler senha caractere por caractere).

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION