ExpertiDict

C · Avançado · Português · Técnico

aritmética verificada

/a.ɾit.ˈmɛ.tʃi.ka ve.ɾi.fi.ˈka.da/substantivo

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

Veja também

Todos os termos de C