📊 Capítulo 03: Condicionais & constexpr
Especialização em Sistemas com C++
🗺️ Computação em Tempo de Compilação: constexpr e consteval
flowchart LR
subgraph COMPILE_TIME ["Tempo de Compilação (Zero Custo em Runtime / 0ns CPU!) ⚡"]
C1["constexpr int fat = fatorial(5);\n(Calculado pelo compilador GCC/Clang e embutido como literal '120' no binário!)"]
C2["if constexpr (std::is_integral_v<T>)\n(Descarta o ramo falso da compilação sem gerar bytecode morto!)"]
end
subgraph RUN_TIME ["Tempo de Execução (Consome Ciclos de CPU)"]
R1["int fat = fatorial_dinamico(argc);\n(Executado instrução por instrução na máquina)"]
end
style COMPILE_TIME fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style C1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
style C2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
style RUN_TIME fill:#ede7f6,stroke:#512da8,stroke-width:2px
style R1 fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
🎯 Slide 1: if e switch com Instrução de Inicialização (C++17+)
// O escopo da variável 'it' fica restrito estritamente ao bloco condicional:
if (auto it = mapa.find(chave); it != mapa.end()) {
std::println("Chave encontrada: {}", it->second);
} else {
std::println("Chave não cadastrada.");
}
// 'it' é destruído aqui automaticamente!
🎯 Slide 2: if constexpr para Templates
- Permite escrever código condicional baseado em tipos. O ramo não escolhido não é sequer compilado, permitindo usar funções que não existiriam para determinados tipos!
🎯 Slide 3: consteval do C++20
- Funções marcadas com
constevalsão obrigadas a rodar exclusivamente em tempo de compilação. Se você tentar chamá-la com um argumento não constante, a compilação falha!
🔗 Navegação do Capítulo 03
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim