C · Avançado · Português · Técnico
aritmética verificada
Macros ckd_add, ckd_sub e ckd_mul do cabeçalho stdckdint.h (C23) que fazem a operação e informam se houve overflow, guardando o resultado truncado no destino.
Onde usar
Substituem as checagens manuais antes da conta em tamanhos e contadores. Devolvem true se o resultado não coube, o que facilita rejeitar entradas maliciosas.
Em código
#include <stdckdint.h>
#include <stdio.h>
int main(void) {
int r;
if (ckd_add(&r, 2000000000, 2000000000))
puts("overflow");
}Exemplos
Usa ckd_mul para calcular o tamanho e rejeita se estourar.
O ckd_add devolve true quando a soma não cabe no tipo de destino.
Cuidado
Ignorar o retorno da macro e usar o resultado truncado como se fosse correto.
Sinônimos
checked arithmetic