O que você precisa saber antes de começar
Achei que todo mundo sabia disso, mas vi muita gente confusa com números sucessores e antecessores mesmo em níveis avançados. A base é simples, mas existem armadilhas que passam despercebidas se você nunca olhou por baixo do capô. Vou explicar do jeito que eu entendi na prática, sem enrolação. O número sucessor de qualquer valor inteiro n é aquele que vem imediatamente depois, ou seja, n + 1. O antecessor é o que vem imediatamente antes, ou n - 1. Isso parece óbvio até você encontrar um caso em que a suposição de "números inteiros" não se sustenta. Foi aí que eu tive meu primeiro problema real.
Eu estava validando uma sequência automática em um sistema legado que usava aritmética de ponto flutuante para gerar identificadores. O sistema pegava um número como 2.5 e tentava calcular o sucessor somando 1. O resultado era 3.5, mas o próximo valor representável em ponto flutuante após 2.5 não era exatamente 3.5 em todos os casos devido à precisão do double. Eu gastei duas horas rastreando um bug que parecia impossível até perceber que o problema era a ausência de uma função adequada para sucessor em precisão finita. A solução foi usar a função nextafter() da biblioteca padrão, que calcula o próximo valor representável exatamente, em vez de simplesmente somar 1. Esse é o tipo de detalhe que ninguém ensina num curso introdutório.
número sucessor e antecessor: a regra prática
Para números inteiros, a conta é trivial. O sucessor de 7 é 8. O antecessor de 7 é 6. Se você tem zero, o antecessor é menos um. Se está lidando com números negativos, a lógica se mantém: o sucessor de menos cinco é menos quatro, e o antecessor de menos cinco é menos seis. A ordem na reta numérica não muda, só a direção que você percorre. O que as pessoas esquecem, e isso é importante, é que essa definição de "imediatamente antes e depois" só funciona de forma limpa para conjuntos discretos como os inteiros. Nos reais, entre qualquer dois números existe infinitamente outro número. Não há sucessor nem antecessor no conjunto dos números reais porque não existe um "próximo" valor. Se alguém te pedir o sucessor de raiz quadrada de dois, não existe resposta exata dentro dos reais. Isso não é uma limitação sua, é uma propriedade do conjunto.
No dia a dia escolar e em concursos, quando aparece a pergunta sobre sucessor e antecessor, o contexto é sempre números inteiros. Fique atento a isso porque questões mais elaboradas podem tentar confundir você com intervalos reais ou com conjuntos como os racionais, onde também não há sucessor ou antecessor bem definidos.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Quando a coisa complica na prática
Existem pelo menos dois cenários em que o cálculo simples falha ou gera resultados surpreendentes. O primeiro é com inteiros de tamanho fixo em programação. Se você declara uma variável como inteiro de 8 bits sem sinal e tenta calcular o sucessor do valor 255, o resultado não é 256. Ele transborda e volta para zero. Isso se chama overflow e acontece silenciosamente na maioria das linguagens. Eu perdi uma manhã inteira caçando esse erro num sistema de controle de estoque que calculava o próximo código de produto usando incremento puro em variáveis byte. O segundo cenário que merece atenção é com números decimais usados em contextos financeiros. Se você trabalha com valores monetários e precisa determinar o sucessor de 9,99 no sentido de "o menor valor maior que nove nove", a resposta depende da unidade monetária. No real brasileiro, o sucessor de 9,99 seria 10,00 se considerarmos a menor subdivisão como o centavo. Mas se estivermos falando de representação binária de ponto flutuante, os valores não se comportam como esperado. Por isso, para dinheiro, use sempre tipos decimais fixos ou inteiros que representem centavos, nunca ponto flutuante.
Outro ponto que poucos mencionam: em teoria dos conjuntos, o sucessor de um ordinal transfinite é definido de forma diferente do que usamos na aritmética cotidiana. O sucessor de omega, por exemplo, é omega mais um, e esse conceito é fundamental em lógica e fundações da matemática. Se você está estudando para algo mais teórico, saiba que a definição formal é S(n) = n union {n}, não apenas n mais um. A diferença é sutil mas relevante em provas e contextos acadêmicos.
Cuidados que valem o tempo
Se você vai implementar cálculo de sucessor e antecessor em código, adicione verificações de limite sempre que trabalhar com tipos de tamanho fixo. Um simples teste antes de incrementar ou decrementar evita comportamento indefinido na maioria das linguagens. Em Python isso não é tão crítico porque o idioma promove inteiros de precisão arbitrária, mas em C, C++, Java e languages similares, ignorar overflow é pedido para problemas sérios. Para uso educacional, mantenha a regra direta: sucessor é mais um, antecessor é menos um, restrito a inteiros. Não tente generalizar para reais sem deixar claro que a generalização não é válida. Alunos costumam aceitar a ideia de "próximo número" nos reais e depois se confundem quando encontram exercícios que exigem rigor.
Se o seu objetivo é apenas resolver exercícios escolares, não precisa de nada além da operação básica de adição e subtração. A dificuldade real aparece quando você leva o conceito para sistemas computacionais ou para contextos matemáticos mais formais, e aí as nuances que descrevi acima passam a importar de verdade.