Namespaces
Variants

ckd_add

From cppreference.net
Definido en el encabezado <stdckdint.h>
#define ckd_add( result, a, b ) /* implementation-defined */

// interfaz expuesta:

bool ckd_add ( type1 * result, type2 a, type3 b ) ;
(desde C23)

Calcula la suma x + y y almacena el resultado en * result . La suma se realiza como si ambos operandos estuvieran representados en un tipo entero con signo de rango infinito, y luego el resultado se convierte de este tipo entero a type1 . Si el valor asignado a * result representa correctamente el resultado matemático de la operación, devuelve false . De lo contrario, devuelve true . En este caso, el valor asignado a * result es el resultado matemático de la operación ajustado al ancho de * result .

Contenidos

Parámetros

a, b - valores enteros
result - dirección donde debe almacenarse el resultado

Valor de retorno

false si el valor asignado a * result representa correctamente el resultado matemático de la suma, true en caso contrario.

Nota

Tanto type2 como type3 deberán ser cualquier tipo entero excepto "plain" char , bool , un tipo entero de precisión de bits , o un tipo enumerado , y pueden ser el mismo. * result deberá ser un valor-l modificable de cualquier tipo entero excepto "plain" char , bool , un tipo entero de precisión de bits, o un tipo enumerado.

Se recomienda producir un mensaje de diagnóstico si type2 o type3 no son tipos enteros adecuados, o si * result no es un lvalue modificable de un tipo entero adecuado.

Ejemplo

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.20.1 Las macros de operaciones con enteros verificados ckd_ (p: 311)

Véase también

(C23)
operación de sustracción verificada en dos enteros
(macro de función genérica de tipo)
(C23)
operación de multiplicación verificada en dos enteros
(macro de función genérica de tipo)